使用访问令牌和刷新令牌持续进行身份验证

时间:2019-10-19 23:01:26

标签: node.js reactjs cookies jwt

我试图弄清楚应该如何继续进行身份验证。

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

第三,仅当访问令牌过期时才使用刷新令牌,无需向服务器发送垃圾邮件以获取新的访问令牌。