JWT: 生成并发给客户端之后,后台是不用存储,客户端访问时会验证其签名、过期时间等再取出里面的信息(如username),再使用该信息直接查询用户信息完成登录验证。jwt自带签名、过期等校验,后台不用存储,缺陷是一旦下发,服务后台无法拒绝携带该jwt的请求(如踢除用户);

Token+Redis:是自己生成个32位的key,value为用户信息,访问时判断redis里是否有该token,如果有,则加载该用户信息完成登录。服务需要存储下发的每个token及对应的value,维持其过期时间,好处是随时可以删除某个token,阻断该token继续使用;

去中心化的JWT优点:去中心化,便于分布式系统使用;基本信息可以直接放在token中。username,nickname,role;功能权限较少的话,可以直接放在token中。用bit位表示用户所具有的功能权限;
缺点:服务端不能主动让token失效;

中心化的Redis+Token优点:服务端可以主动让token失效;
缺点:依赖内存或redis存储;分布式系统的话,需要redis调用增加了系统复杂性;
使用redis实现分布式session:https://blog.csdn.net/qwhsza/article/details/147395768
为什么JWT 比 session 更适合于分布式系统:https://www.cnblogs.com/gongchengship/p/18284483

posted on 2025-04-30 11:42  邢帅杰  阅读(171)  评论(0)    收藏  举报