在 SPA 中刷新 JWT 的最佳实践?
Posted
技术标签:
【中文标题】在 SPA 中刷新 JWT 的最佳实践?【英文标题】:Best practices for refreshing JWT in SPA? 【发布时间】:2018-11-02 10:23:38 【问题描述】:您好,我正在开发一个与 Express API 通信的 React 应用。我正在尝试实现 JWT 身份验证,但我不知道 jwt 过期时会发生什么。如果用户在令牌过期时注销,这似乎不太友好。
我应该使用刷新令牌吗?正如它在 node-jsonwebtoken 包文档 (jsonwebtoken) 中所说的那样。这可能不是最好的方法。
我应该在对服务器的每个请求中创建一个新的 jwt 吗?如果用户长时间阅读文章而没有做任何请求,他将被注销。
也许我错了,最佳做法是使用较长的过期时间并让用户退出。如果是这种情况,什么是合理的时间?
谢谢!
【问题讨论】:
【参考方案1】:通常与刷新令牌一起使用的模式是遵循以下工作流程:
-
某些 API 调用/资源返回 401,提醒令牌已过期,这有时伴随着原因,例如过期令牌,无效令牌
创建对失败的 API 调用的引用,以便稍后重试
尝试使用 refresh_token 刷新令牌
如果刷新成功,请继续执行排队的 API 调用
如果刷新失败,用户需要重新登录
您还可以使用上述方法对多个失败的请求进行排队,以防在进行刷新时多次调用失败。
再加上适当的到期时间,这实际上取决于您的应用程序,这在过去对我来说已被证明是一个可靠的解决方案。
另一种方法是实现“心跳”API 调用,当用户在网站上时定期更新用户的令牌,但这可能会带来可能不希望出现的副作用。
【讨论】:
以上是关于在 SPA 中刷新 JWT 的最佳实践?的主要内容,如果未能解决你的问题,请参考以下文章