我们可以将JWT用于会话管理吗?



在我自己的应用程序中引入JWT之后。我面临一些问题,可能是我以错误的方式这样做。请建议我最好的实施方式。

技术堆栈:( Mern(Mongodb Expressjs React节点。

成功登录后,我通过在其中添加"用户ID"并返回UI层来创建一个新的JWT令牌。在UI端,我将其存储在会话存储中。我使用的所有其他请求向服务器使用。在进入控制器之前,我正在使用JWT验证在中间件中检查Middleware的令牌。如果成功验证,则Next((else返回带有无效令牌的错误。

现在问题:

  1. 注册用户1
  2. 使用登录用户1
  3. 成功从会话存储中登录复制令牌后。
  4. 然后注销用户1
  5. 注册用户2
  6. 使用登录用户2
  7. 用户1 的会话存储代币> 用户2
  8. 刷新页面后用户1 再次而不是用户2

以下两点的任何帮助或建议:

  • 我应该如何管理JWT的用户会话?
  • 我应该如何通过JWT管理API身份验证?

您不应将令牌存储在浏览器会话中,或者在登录时至少将其删除。令牌包含有关用户以及签名的所有信息,这些信息验证了令牌的有效性。如果您复制&存储它,它仍然有效。登录用户不会使令牌无效。

您应该在令牌上添加一个有效期,以使其有效期很短的时间,但是您需要刷新它,然后在它无效之前以间隔进行刷新。这样做的正常方法是使用具有更长间隔的刷新令牌,并防止用户一次又一次地登录。

当用户注销时,您应该停止从刷新令牌重新发出访问令牌。

有关JWT。

最新更新