【问题标题】:Persisting authentication with Access Token and Refresh token使用访问令牌和刷新令牌保持身份验证
【发布时间】:2020-02-16 12:06:28
【问题描述】:

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

假设用户使用电子邮件和密码成功验证。那么服务器生成并返回两个令牌:

  • 要存储在浏览器存储中的访问令牌(jwt 过期 15 分钟)
  • refreshtoken(jwt 过期 7 天)作为安全 cookie。

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

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

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

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

【问题讨论】:

    标签: node.js reactjs cookies jwt


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-09-17
      • 2019-11-29
      • 2017-11-08
      • 2020-07-07
      • 2021-06-09
      • 1970-01-01
      • 2019-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多