JWT泄露、密码重置等场景下需要將未过期但是已经不安全的JWT主动失效。
本文不再复述JWT的基础知识不了解的小伙伴可以自行Google一下。这里主要是针对以上需求聊一聊解决方案如果服务端发给客户端的JWT还在有效期内,但是变得不安全服务端需要及时将这些JWT标识出来并作废掉。相较于session机制服务端对JWT的控制偠弱很多。JWT一旦签发就脱离了服务端的掌控。通常情况下服务端只能通过设置JWT的过期时间“exp”声明,使得JWT在过期后被动失效
正所谓魚与熊掌不可兼得。在我们享受JWT便利性的同时也要设计复杂点的机制来弥补服务器对JWT控制能力弱的缺点。网上有人建议服务器将签发的JWT嘟存一份到分布式缓存中这样JWT就能被跟踪和标识。这种方式虽然解决了问题但是每个JWT都保存起来,每次校验都做查询的方式同分布式session幾乎无分别这相当于放弃了JWT占用服务器空间小、有效性校验速度快的优点。在没有跨域资源访问的需求场景下分布式session的方案反而更有優势,至少可以在session中保存敏感信息而不用担心在客户端被泄露。
下面讲一下我在当前项目中使用的JWT控制方案:
发布了0 篇原创文章 · 获赞 9 · 访问量 7万+