jwt退出登录/修改密码时如何使原来的token失效

21.12.23更新
评论区大佬 @斯文的小远吖 给出的思路:“利用刷新token,生成token时将加密再加密之后的用户密码,存入token,使用refreshToken模式。token5秒过期。refreshToken 2天或者1个月过期或者更长。需要客户端做代码支持,访问接口出现401(token失效时),使用refreshToken去安全平台申领新的token,申领时检测数据库密码加密之后是否复合token中加密再加密之后的用户密码、数据库里用户是否已被封禁等。如若用户密码发生修改,或已被封禁,则拒绝颁发token。给一段关键代码,这是使用oauth2实现的。”

…这是很久很久之前的帖子了,我就不写了,有空下个学期再研究。


其实前端删掉这个Token不就行了吗(小声bb
不行,这样即使退出登录后拿着以前的token还是可以访问到。

看了半天,感觉网上没有好的解决方案。真让人头大。如何Logout呢?
既然接口有这个要求,必须实现啊。绞尽脑汁,写一下可行的两种方法,虽然还是挺蠢的。

第一种办法:
登录第一次生成token时,把token存入数据库。每次请求验证一下是不是和数据库的token一样。退出登录时,删掉数据库里的token。
第二种办法:
这是我可能要采用的方法。
就是退出登录时,改变加密的String JWT_SECRET(我的是这样写)。这样由于生成token的方法变了,即使是相同的用户也不能拥有一样的token了。原来的token失效。
// 很久之后的更新:经评论区指正,这样做会使所有用户的token都失效,我自己就一个用户没考虑这个…

评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值