有状态Token:
有状态的token和session的sessionid差不多,用户每次操作都会自动刷新(推迟) Token 的过期时间。(需要服务器存储登录记录,增加服务器负担)
还有另一种方案,使用 Refresh Token,它可以避免频繁的读写操作,服务器不用每次用户登录操作推迟Token的过期时间。当Token过期时,服务器告诉客户端Token过期,客户端发送Refresh Token给服务器生成新的Token给客户端,客户端就可以使用新的Tonken。(Refresh Token由服务器在第一次发给客户端Tonken的时候发过去,且有效期相对长一点,Refresh Token再过期就就重新用户密码登录)。
无状态 Token:
把所有状态信息放在Token上,服务器不要存放Token的状态(像Token的过期时间等等),服务器对Tonken进行对称加密再发送给客户端,客户端发送这个Tonken给服务器时候,服务器只需要对称解密就可以认证 Token 有效。
(JWT 已经定义了详细的规范,而且有各种语言的若干实现。)
区别:
无状态的Token:服务器存放的是这个加密解密Tonken的算法和密钥,收到Token由算法解密得以认证。Refresh Token 有效时间较长,所以它应该在服务器端有状态。
有状态的Token:需要服务器存放Tonken,收到Token与服务器的Token进行比较认证。
参考链接:
博客园大佬
简单理解token机制
本文深入探讨了有状态和无状态Token的工作原理及应用。有状态Token类似session机制,需服务器存储并更新;无状态Token则完全依赖于Token本身,服务器通过解密验证其有效性。文章还介绍了RefreshToken机制,用于减少服务器负担,延长Token的有效期。
2087

被折叠的 条评论
为什么被折叠?



