JWT的优缺点及主动失效方案

  • Post author:
  • Post category:其他


原因:前后端分离

以前的传统模式下,后台对应的客户端就是浏览器,就可以使用session+cookies的方式实现登录,但是在前后分离的情况下,后端只负责通过暴露的RestApi提供数据,而页面的渲染、路由都由前端完成。因为rest是无状态的,因此也就不会有session记录到服务器端。

优点

JWT的优点是服务端生成之后就不需要在维护JWT,只需要解析即可,省去分布式session方案中需要去数据库查询的时间。

缺点

不易实现JWT的主动失效。

要改变某个用户权限时数据库中用户的权限很容易改变,下次登录获得的JWT也是配置后的,还要解决的就是之前已经发放的失效前权限的JWT。

失效指的是加入管理员不想让某个持有JWT的用户继续访问资源,要让JWT失效不能再访问资源。

解决方案

将有效时间调小

但是即使过小会增加登陆的流程相当于一直在做登录操作。

维护JWT白名单

每个JWT发放都记录在数据库,这种和保存sessionid差不多。。

失效就将某个用户的JWT移除白名单。

维护JWT黑名单

失效就将该用户的JWT移入黑名单,直到过期再删除。

维护JWT版本号

数据库中记录用户所持有id的最新值,每次生成JWT时版本号自增。验证时先比较JWT版本号与数据库中维护的最新版本号是否相等,小于则失效。



版权声明:本文为weixin_45875621原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。