首页 > 解决方案 > 节点js jwt认证

问题描述

所以我最近使用jwt在我的服务器中创建了一个身份验证系统,一切正常,但是当我想创建一个注销路由时,我意识到了一些事情:

jwt不能被取消验证,而是我所做的是将这些令牌与登录用户的 id 一起存储在 mongodb 中,因此每次用户登录时,令牌都会保存到数据库中,但在不同的集合中使用sha256算法进行哈希处理。

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

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

好处

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

现在这是我的问题:

标签: node.jssecurityauthenticationjwt

解决方案


如果你给 jwt 令牌一个过期时间而不是你想将它存储在数据库中的原因,你也可以从用户对象中签署你想要的数据,这样就不会出现密码泄漏或会话令牌泄漏的问题,而且每次你​​想要一些东西时jwt 令牌,您必须从数据库中获取它并且必须对其进行解码,这会变得冗长,最好不要将令牌存储在数据库中。

当您可以将令牌存储为客户端 cookie 或会话存储时。每当您想要令牌时,您都必须在您的授权文件中对其进行解码,并且必须请求 id 或其他任何您想要的东西

您可以将其存储在本地存储中,但不推荐。你可以看看这个博客

现在由您决定将其存储在哪里,如果您想了解更多信息,请查看此线程


推荐阅读