几句话说清session,cookie和token的区别

一、cookie和session实际上是同一套认证流程,相辅相成。

  • cookie保存在客户端
    • (通常保存session的sessionID,这个sessionID是一个毫无规则的随机数,由服务器在客户端登录通过后随机生产的。客户端每次访问该网站都要带上这个由sessionID组成的cookie。服务器收到请求,首先拿到客户端的sessionID,然后从服务器内存中查询它所代表的客户端(用户名,用户组,有哪些权限等)。)
  • session保存在服务器
    • (用于记录客户状态,比如我们经常会用session保存客户的基本信息、权限信息等)

二、token则可以服务器完全不用保存任何登录信息。

  • 客户端可以将Token保存到任何地方,无限制,无状态,利于分布式部署。
    • 整体的流程是这样的:
    1. 客户端使用用户名、密码做身份验证;
    2. 服务端收到请求后进行身份验证;(也可能是统一登录平台、网关)
    3. 验证成功后,服务端会生成一堆客户端身份信息,包括用户名、用户组、有那些权限、过期时间等等。这个整体就叫做token。签发一个Token后返回给客户端;
    4. 客户端收到Token以后可以把它存储起来(可以放在随意的数据库中,例如Redis);每次向服务端发送请求的时候,都要带着Token;
    5. Token会有过期时间,过期后需要重新进行验证;
    6. 服务端收到请求,会验证客户端请求里面的Token,验证成功,才会响应客户端的请求;

三、为何诞生这些

  1. 由于HTTP无状态的特性,如果要实话客户端和服务器端的会话保持,那就需要其它机制来实现,于是Cookie和Session应运而生。
  2. Session和Cookie机制来保持会话,会存在一个问题:客户端浏览器只要保存自己的SessionID即可,而服务器却要保存所有用户的Session信息,这对于服务器来说开销较大,而且不利用服务器的扩展(比如服务器集群时,Session如何同步存储就是个问题)!于是有人思考,如果把Session信息让客户端来保管而且无法伪造不就可以解决这个问题了?进而有了Token机制。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值