今天这篇文章介绍一下如何在修改密码、修改权限、注销等场景下使JWT失效。
文章的目录如下:
解决方案
JWT最大的一个优势在于它是无状态的,自身包含了认证鉴权所需要的所有信息,服务器端无需对其存储,从而给服务器减少了存储开销。
但是无状态引出的问题也是可想而知的,它无法作废未过期的JWT。举例说明注销场景下,就传统的cookie/session认证机制,只需要把存在服务器端的session删掉就OK了。
但是JWT呢,它是不存在服务器端的啊,好的那我删存在客户端的JWT行了吧。额,社会本就复杂别再欺骗自己了好么,被你在客户端删掉的JWT还是可以通过服务器端认证的。
使用JWT要非常明确的一点:JWT失效的唯一途径就是等待时间过期。
但是可以借助外力保存JWT的状态,这时就有人问了:你这不是打脸吗?用JWT就因为它的无状态性,这时候又要保存它的状态?
其实不然,这不被逼上梁山了吗?不使用外力保存JWT的状态,你说如何实现注销失效?
常用的方案有两种,白名单和黑名单方式。
1、白名单
白名单的逻辑很简单:认证