【问题标题】:Best practices for refreshing JWT in SPA?在 SPA 中刷新 JWT 的最佳实践?
【发布时间】:2018-11-02 10:23:38
【问题描述】:

您好,我正在开发一个与 Express API 通信的 React 应用。我正在尝试实现 JWT 身份验证,但我不知道 jwt 过期时会发生什么。如果用户在令牌过期时注销,这似乎不太友好。

我应该使用刷新令牌吗?正如它在 node-jsonwebtoken 包文档 (jsonwebtoken) 中所说的那样。这可能不是最好的方法。

我应该在对服务器的每个请求中创建一个新的 jwt 吗?如果用户长时间阅读文章而没有做任何请求,他将被注销。

也许我错了,最佳做法是使用较长的过期时间并让用户退出。如果是这种情况,什么是合理的时间?

谢谢!

【问题讨论】:

    标签: reactjs express authentication jwt single-page-application


    【解决方案1】:

    通常与刷新令牌一起使用的模式是遵循以下工作流程:

    1. 某些 API 调用/资源返回 401,提醒令牌已过期,这有时伴随着原因,例如过期令牌,无效令牌
    2. 创建对失败的 API 调用的引用,以便稍后重试
    3. 尝试使用 refresh_token 刷新令牌
    4. 如果刷新成功,请继续执行排队的 API 调用
    5. 如果刷新失败,用户需要重新登录

    您还可以使用上述方法对多个失败的请求进行排队,以防在进行刷新时多次调用失败。

    再加上适当的到期时间,这实际上取决于您的应用程序,这在过去对我来说已被证明是一个可靠的解决方案。

    另一种方法是实现“心跳”API 调用,当用户在网站上时定期更新用户的令牌,但这可能会带来可能不希望出现的副作用。

    【讨论】:

      猜你喜欢
      • 2020-01-16
      • 2020-05-02
      • 2021-10-27
      • 1970-01-01
      • 2010-09-26
      • 2019-09-09
      • 1970-01-01
      • 2021-10-07
      • 2018-04-28
      相关资源
      最近更新 更多