DeTechn Blog

Token是什么?和session、cookie相比,使用场景有什么区别?

session和cookie

在讲Token之前,先简单说说什么是session和cookie。

Token

但是这里会有个问题,服务器要保存所有用户的session信息,开销会很大,如果在分布式的架构下,就需要考虑session共享的问题,需要做额外的设计和开发,例如把session中的信息保存到Redis中进行共享;所以因为这个原因,有人考虑这些信息是否可以让客户端保存,可以保存到任何地方,并且保证其安全性,于是就有了Token。

Token是服务端生成的一串字符串,可以看做客户端进行请求的一个令牌。

基于Token的认证流程

整体的流程是这样的:

  1. 客户端使用用户名、密码做身份验证;
  2. 服务端收到请求后进行身份验证;(也可能是统一登录平台、网关)
  3. 验证成功后,服务端会签发一个Token返回给客户端;
  4. 客户端收到Token以后可以把它存储起来(可以放在);每次向服务端发送请求的时候,都要带着Token;
  5. Token会有过期时间,过期后需要重新进行验证;
  6. 服务端收到请求,会验证客户端请求里面的Token,验证成功,才会响应客户端的请求;

    总结

    cookie:保存在浏览器种,有大小限制,有状态;
    session:保存在服务器中,服务器有资源开销,分布式、跨系统不好实现;
    Token:客户端可以将Token保存到任何地方,无限制,无状态,利于分布式部署。

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »