简单对比Session和Jwt的优缺点
有状态(SESSION)
所谓有状态,就是的就是传统的 cookie session ,cookie的身份验证是有状态的。这意味着验证的记录或者会话(session)必须同时保存在服务器端和客户端。服务器端需要跟踪记录session并存至数据库,同时前端需要在cookie中保存一个sessionID,作为session的唯一标识符,可看做是session的“身份证”。前端退出的话就清cookie。后端强制前端重新认证的话就清或者修改session。
优点
- 相较于无状态的验证机制,传统的session可以直接从后端主动控制下线,删除session,方便实现互t等功能
- session保存在服务端,相对比较安全
- 有状态的session可以较为准确统计在线人数
缺点
- 有状态的存储session需要服务器空间
- 扩展不方便,需要session同步,借助redis实现共享等
无状态(JWT)
优点
- json通用性,方便跨语言
- 不需要在服务端保存会话信息, 易于应用的扩展
- 占用字节很小,方便传输
缺点
- JWT的加解密耗费CPU计算资源
- 不能方便的管理会话
- 注销没有即时性,如果token泄露,注销状态下仍可登录操作