JWT面试常见问题
1.jwt和security的对比:
JWT的优点:
- 无需再服务端存储用户数据,减轻服务端压力
- 轻量级,json风格,比较简单
- 跨语言
JWT的缺点:
- token一旦签发,无法修改
- 无法更新token有效期,用户登录状态刷新难以实现
- 无法销毁一个token,服务端不能对用户状态进行绝对控制
- 不包含权限控制
SpringSecurity:
- 优点:
- 用户信息保存再服务端,服务端可以对用户状态绝对控制
- 基于Spring,无缝整合,修改登录逻辑,其实就是添加过滤器
- 整合权限管理
- 缺点:
- 限定了语音
- 实现复杂,基于一连串的过滤器链
- 需要再服务端保存用户信息,增加服务端压力
2.你们使用JWT做登录凭证,如何解决token注销问题
答:jwt的缺陷是token生成后无法修改,因此无法让token失效。只能采用其它方案来弥补,基本思路如下:
方案一:
1)适当减短token有效期,让token尽快失效
2)删除客户端cookie
3)服务端对失效token进行标记,形成黑名单