回复
实战!退出登录时如何借助外力使JWT令牌失效?(二)
love374
发布于 2022-7-11 11:47
浏览
0收藏
这里我是把JWT相关的信息同时封装到了Request中,实体类为JwtInformation,如下:
LoginVal继承了JwtInformation,如下:
此时AuthenticationFilter这个过滤器修改起来就很简单了,只需要将jti和过期时间封装到LoginVal中即可,关键代码如下:
逻辑很简单,上图都有标注。
3、注销接口实现
之前文章中并没有提供注销接口,因为无状态的JWT根本不需要退出登录,傻等着过期呗。
当然为了实现注销登录,借助了Redis,那么注销接口必不可少了。
逻辑很简单,直接将退出登录的JWT令牌的jti设置到Redis中,过期时间设置为JWT过期时间即可。代码如下:
OK了,至此已经实现了JWT注销登录的功能.......
“源码已经上传GitHub,关注公众号:码猿技术专栏,回复关键词:9529 获取!”
涉及到的三个模块的改动,分别如下:
总结
思想很简单,JWT既然是无状态的,只能借助Redis记录它的状态,这样才能达到使其失效的目的。
测试
业务基本完成了,下面走一个流程测试一下,如下:
1、登录,申请令牌
2、拿着令牌访问接口
该令牌并没有注销,因此可以正常访问,如下:
3、调用接口注销登录
请求如下:
4、拿着注销的令牌访问接口
由于令牌已经注销了,因此肯定访问不通接口,返回如下:
文章转自公众号:码猿技术专栏
标签
已于2022-7-11 11:47:26修改
赞
收藏
回复
相关推荐