令牌"/>
JWT无效令牌
- 我在mongodb中使用Express JS
- 使用jsonwebtoken进行身份验证
- 成功登录后,我将令牌放入cookie中
- 对于传入的请求数据,我检查cookie中的令牌。如果令牌有效,我重新生成令牌并将新令牌放入cookie和响应中请求的数据(就像为每个请求刷新令牌一样)。
到现在一切正常,并且不使用db
我想在没有db的情况下使旧令牌无效,但是似乎不可能这样做,如下所述。
- 为了成功登录,我使用jwt令牌设置了cookie。同时存储该令牌也位于数组中,并且用户的信息文档也位于db中。
- 对于每个数据请求,我都会验证令牌并检查令牌是否存在于数组匹配中,如果匹配,则从中删除该标记数组生成新令牌将新令牌放入数组和用户信息db中的文档,再次在cookie和响应数据中设置新令牌。
上述步骤也可以正常工作,并且我能够使旧令牌无效
但是如果服务器宕机怎么办?如果服务器关闭了每个用户丢失的所有令牌,并且所有用户都被强制注销
为防止该问题,如果令牌与令牌匹配,我将检查数据库中用户信息文档中的令牌
通过执行此步骤,无需进入db并检查有效令牌。仅当令牌不存在于数组中时才进行DB查找。
我的问题是安全性和速度性能
问题此实施效果好吗?随着用户的增加,速度性能将是良好的,并且每个用户的阵列中有如此多的令牌。意味着需要循环所有令牌以匹配数组中的令牌。
抱歉英语不好
回答如下:更好的解决方案是将令牌列入黑名单。当用户注销时,您将该令牌放入黑名单,例如redis缓存。
[每当有人登录时首先检查令牌是否在您的Redis缓存中,否则,请继续,否则您将拒绝。
更多推荐
JWT无效令牌
发布评论