在我自己的应用程序中引入JWT之后。我面临一些问题,可能是我以错误的方式这样做。请建议我最好的实施方式。
技术堆栈:( Mern(Mongodb Expressjs React节点。
成功登录后,我通过在其中添加"用户ID"并返回UI层来创建一个新的JWT令牌。在UI端,我将其存储在会话存储中。我使用的所有其他请求向服务器使用。在进入控制器之前,我正在使用JWT验证在中间件中检查Middleware的令牌。如果成功验证,则Next((else返回带有无效令牌的错误。
现在问题:
- 用注册用户1
- 使用登录用户1
- 成功从会话存储中登录复制令牌后。
- 然后注销用户1
- 用注册用户2
- 使用登录用户2
- 用户1 的会话存储代币> 用户2
- 刷新页面后用户1 再次而不是用户2 。
以下两点的任何帮助或建议:
- 我应该如何管理JWT的用户会话?
- 我应该如何通过JWT管理API身份验证?
您不应将令牌存储在浏览器会话中,或者在登录时至少将其删除。令牌包含有关用户以及签名的所有信息,这些信息验证了令牌的有效性。如果您复制&存储它,它仍然有效。登录用户不会使令牌无效。
您应该在令牌上添加一个有效期,以使其有效期很短的时间,但是您需要刷新它,然后在它无效之前以间隔进行刷新。这样做的正常方法是使用具有更长间隔的刷新令牌,并防止用户一次又一次地登录。
当用户注销时,您应该停止从刷新令牌重新发出访问令牌。
有关JWT。