首页 > 解决方案 > 使用访问令牌和刷新令牌保持身份验证

问题描述

我试图弄清楚我应该如何坚持身份验证。

假设用户使用电子邮件和密码成功进行了身份验证。然后服务器生成并返回两个令牌:

当将 accesstoken 存储在本地存储(或会话存储)中时,React 应用程序将简单地检查它是否存在于存储中并继续渲染私有路由。所以这意味着如果用户有一个无效/被盗的访问令牌,React 似乎仍然会暂时呈现私有页面(尽管没有私有内容),直到令牌被检查并失效。这是一种奇怪的行为吗?

在这种情况下,每次用户访问私有路由时,React 应用程序是否应该验证和刷新令牌?以及它何时获取私人数据?

目前,我将访问令牌和刷新令牌都分配给了安全 cookie,并且 React 中的私有路由总是在呈现私有页面之前刷新令牌。只要用户拥有有效的 cookie,这就会导致登录页面在呈现任何私人页面之前短暂闪烁。

我试图弄清楚在验证令牌时 React 应该呈现什么,以及是否应该在每次加载私有路由和获取私有数据时刷新令牌。

标签: node.jsreactjscookiesjwt

解决方案


首先第一件事:不要将会话存储在 localstorage 或 sessionStorage 中始终使用服务器端 cookie 来存储您的 jwt。

其次,在服务器端,如果您扩展到多个节点容器,您可能需要使用 Redis,只需为此创建一个快速中间件。

第三,刷新令牌应该只在访问令牌过期时使用,不需要向服务器发送垃圾邮件来获取新的访问令牌。


推荐阅读