我有一个javascript浏览器应用程序(SPA),它使用短期访问令牌和更长寿的刷新令牌来调用受OAuth 2保护的服务器。 它恰好是我的服务器和我的授权服务器(我的OAuth),但如果我使用Google或任何其他具有短期访问令牌(或任何基于令牌的服务)的OAuth 2授权服务器,则该问题将适用。
假设我通过jQuery $ .ajax()调用服务器。 当我使用无效令牌进行呼叫时,服务器返回401,我必须使用刷新令牌请求新的访问令牌。我不需要,也不想打扰用户,我的应用程序可以在没有它们的情况下重新进行身份验证。
令牌是短暂的,这可能每5分钟或每小时左右发生一次。如果它在我发帖时发生,我不想丢失信息。我需要重复这篇文章。
另请注意,我倾向于进行大量的这些ajax调用,并且无法保证哪些将首先响应 - 毕竟它们是异步的。
我的问题是我们如何处理这个问题?当我得到401时,有没有一种简单的方法可以重播我的帖子 - 这对很多同时出局的电话很有效?
此外,这是否是OAUth客户的常见问题?为什么我找不到很多文档和库?
(我找到了一些,就像这一个:https://github.com/esbenp/jquery-oauth,但我希望这可能是解决方案无处不在的主流问题。
答案 0 :(得分:0)
您需要在每次请求之前检查令牌过期。如果令牌过期,则开始刷新过程,然后在更新令牌后发出请求。理想情况下,您将知道令牌到期时间,如果没有,那么您可以检查401响应。 使用OAuth 2,您应该知道令牌到期时间。这可能是在每个需要身份验证的请求之前进行的简单检查。