在SPA中刷新JWT的最佳做法?

时间:2018-05-23 12:16:50

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

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

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

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

也许我错了,最佳做法是使用大的过期时间并让用户退出。如果这是一个合理的时间?

谢谢!

1 个答案:

答案 0 :(得分:2)

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

  1. 某些API调用/资源返回401,警告令牌已过期,这有时伴随着一个原因,例如:过期令牌,无效令牌
  2. 创建对失败的API调用的引用,以便稍后重试
  3. 尝试使用refresh_token
  4. 刷新令牌
  5. 如果刷新有效,请继续执行排队的API调用
  6. 如果刷新失败,则用户需要再次登录
  7. 如果在刷新过程中多次调用失败,您还可以使用上述方法对多个失败的请求进行排队。

    加上一个合适的到期时间,这实际上取决于您的应用程序,这对我来说已经证明是一个强大的解决方案。

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