在我自己的应用程序中引入JWT之后。我面临一些问题,可能是我做错了。请告诉我最好的实施方式。
技术堆栈:( MERN)MongoDB Expressjs反应节点。
成功登录后,我通过在其中添加“user-id”并返回UI层来创建新的JWT令牌。在UI结束时,我将该令牌存储在会话存储中。这个令牌我用于服务器的所有进一步请求。在进入控制器之前,我正在使用JWT验证检查中间件中的令牌以进行验证。如果成功验证,则next()else返回带有无效令牌的错误。
现在发出诅咒:
有关以下两点的任何帮助或建议:
- 我应该如何通过JWT管理用户会话?
- 如何通过JWT管理API身份验证?
答案 0 :(得分:1)
您应该不在浏览器会话中存储令牌,或者至少在注销时将其删除。令牌包含有关用户以及签名的所有信息,用于验证令牌的有效性。如果你复制&存储它,它仍然有效。注销用户不会使令牌失效。
您应该为令牌添加一个到期时间,使其仅在很短的时间内有效,但您需要在它失效之前按间隔刷新它。执行此操作的常规方法是使用间隔较长的刷新令牌,并防止用户一次又一次地登录。
当用户注销时,您应该停止从刷新令牌重新发出访问令牌。
有关JWT的更多信息,请参阅https://jwt.io/introduction/。