节点js jwt身份验证

时间:2020-09-22 21:17:22

标签: node.js security authentication jwt

因此,我最近使用 jwt 在服务器中建立了一个身份验证系统,一切正常,但是当我想进行登出路由时,我意识到了一些事情:

jwt 不能被取消验证,而是将我所做的操作与登录的用户ID一起存储在mongodb中,因此每次用户登录时,令牌都保存到数据库中,但使用不同集合中的> sha256 算法。

-我仅将其用于验证目的,因此,例如,当我们打到受保护的路由时,我们将检查我们拥有的当前令牌(来自标头或cookie)在数据库中是否有效,然后使用jwt.verify()和其他验证步骤对它进行验证

基本上是将令牌列入白名单。

好处

-每当我要注销用户时,我只需从数据库中删除该令牌
-或删除所有具有当前配置文件ID的令牌,如果我想注销该帐户的所有用户...

现在这是我的问题:

  • 我的方法可行吗?
  • 对安全性有害吗?(请记住,令牌是散列存储的吗?”

1 个答案:

答案 0 :(得分:0)

如果给了jwt令牌一个到期时间,而不是为什么要将其存储在数据库中,并且还可以从用户对象中签名所需的数据,这样就不会出现密码泄漏或会话令牌泄漏的问题,并且每次要从jwt令牌中获取某些东西,您必须从数据库中获取它,并且必须对其进行解码,这变得冗长了,最好不要将令牌存储在数据库中。

何时可以将令牌存储为客户端cookie或会话存储中。每当需要令牌时,都必须在授权文件中对其进行解码,并要求提供id或其他所需的内容

您可以将其存储在本地存储中,但不建议使用。您可以查看此blog

现在它就在您的存储位置,如果您想了解更多信息,请查看thread