小白对 JWT 跟 session 有些疑问,期望解惑?
看了了许多文档,我的理解 JWT 本质上是一种将用户信息放到浏览器持久化的方案,这种方案要求服务端必须相信请求携带的 JWT 信息。
这种方案下是否能实现 用户权限动态变更的业务,比如踢人
若实现不了,需要服务端根据 JWT 查找用户信息, 是否又需要回归到 session 的解决方案
回复
1个回答

test
2024-06-23
- jwt的优势在于,服务端收到请求后,可以直接拿到用户的身份信息,无需再查库或者访问数据中心之类的中心化服务。反过来说,只要存在类似踢人的需求,那么 jwt 的优势直接消失,反正都要查,在请求里放一个更小的 token 去查更简单
- 所以 jwt 适合的场景其实是服务和服务之间的通信,网关获取到用户身份,做成 jwt 加到请求里,后续服务就不需要再访问用户服务这种中心服务了,而且一次请求一个 jwt,不需要考虑踢人之类的事情
- 最后说一下 session,session 就是 session,类似一个 Map,客户端发请求带着一个 key,服务端用这个 key 拿到 session。最传统的 cookie 里放 sessionid 是最简单有效的方式,类似 app 这种非浏览器环境,token 其实也是起到 sessionid 的作用,而 jwt 其实就是把’去找 session‘的操作变成了’把 session 解析出来‘的操作
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容