修改密码或者通过忘记密码重置密码之后,jwt 的失效问题

修改密码或者通过忘记密码重置密码之后,jwt 的失效问题,第1张

修改密码或者通过忘记密码重置密码之后,jwt 的失效问题,第2张

如题:

目前使用的 token 是 redis 中存 uuid 作为 key,然后返回前端这个 uuid;

那么问题来了:
1.如果用户登录之后修改密码,因为用户已经登录,所以我可以获取他的 token 再删除他的 token,没问题
2.如果用户通过忘记密码来重置密码,那么我给他重新返回 uuid 作为 token,只要之前的 token 没到期,那么仍然有效


如果使用 jwt,那么使用如下:
在 payload 中加入`user_id`然后返回给前端,后端不作保存,只做校验解密

一样的问题:
1.用户再怎么修改密码,`user_id`又不会改变,只要 jwt 不过期,用户再怎么修改密码,之前签发的 jwt 仍然可以校验出来`user_id`

这种问题应该怎么解决呢?

----------------------- 以下是精选回复-----------------------

答:现在有一个思路是这样
```python
1. 在 jwt 的 payload 中添加`user_id`和一个`唯一编码`,同时在 redis 中保存这个编码,如果修改密码,则改变 jwt 里面的编码和 redis 中的编码

可是如果这样,jwt 就已经是有状态的了吧?
```
答:密码加盐,改密码换盐, 如果盐不对但是 uid 是对的, 那么刷新 jwt
答:推荐看看这篇文章: https://medium.com/devgorilla/how-to-log-out-when-using-jwt-a8c7823e8a6
答:一般修改完密码,都退出当前用户重新登录,jwt 这种退出后原来的就进入黑名单,就不能再用这个 token 访问了。
答:我碰到了和你类似的问题,用户密码被盗后,找回密码,但是盗号人还是可以用之前签发的 token 使用。
我的 token 签发后不存,所有用户会出现多个 token 都有可能,但我过期超级短,所以也不在意。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 修改密码或者通过忘记密码重置密码之后,jwt 的失效问题

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情