@
zuixinwenyue 先说一些传统的 token 模式有状态和无状态
1.有状态:cookie 或者 uuid 生成一个 token 放请求头里,这些都属于有状态。服务侧缓存 token 信息
2.无状态: jwt 本身就带了 token 的信息&用户信息;
分析一下痛点,可能举例不完善:
有状态: 每次请求进来需要查询缓存啊 or 数据库,影响性能
可以做判断 token 是否存在啊 用户是否登录过期啊 用户有没有被禁用 也可以做到用户信息发生修改 踢用户下线之类的操作 只允许一端登录啊。可控性非常大;
无状态: 无状态的话就不需要查询数据库了,从性能来讲肯定是比有状态要好的,服务侧拿到只需要验签就可以。
缺点也很明显,上面说到有状态能做的都不行
双 token 我自己感觉是折中了一下 在需要性能+用户可控方面折中,一般来讲 accessToken 是无状态的用于快速验证 过期时间较短,refreshToken 是有状态 用于判断用户信息之类的操作 过期时间较长。这样就可以在性能和用户可控方面折中啦。
以上是我的浅见