有没有一个很好的理由不在redis这样的键值存储中存储密码重置令牌?

gk7wooem  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(317)

通常我将散列的密码重置令牌存储在像mysql这样的数据库中。
在我当前的应用程序中,我使用jwt来减少数据库查询的数量。我还使用redis来跟踪有效的jwt,现在我想知道为什么我不应该只在redis中保存密码重置令牌,并将令牌Map到用户id+时间戳(以拒绝旧令牌)。
我能想到的唯一原因就是内存使用。
还有别的理由不这样做吗?

3df52oht

3df52oht1#

您将引入一个失败点,即redis。
如果跟踪有效的jwt是检查jwt是否被撤销的一种方法,那么您可能已经有了那个失败点。如果redis不可用怎么办?您可以拒绝访问(因此出现故障点),或者接受任何已验证的jwt作为有效的(未撤销)。
如果后者为真,那么在redis中存储reset令牌只会使依赖关系显式化:如果redis关闭,则不能更改密码。

相关问题