我正在使用带有访问/刷新令牌的 OAuth。我按照这些示例尝试捕获未经授权的 http 调用,自动刷新令牌,然后使用新令牌重试调用:
https://www.illucit.com/blog/2016/03/angular2-http-authentication-interceptor/
我正在扩展 Angular 的 Http 类并成功捕获 401。我的问题是当我几乎同时有多个 http 调用时。他们都返回未经授权的 401。然后他们都尝试刷新令牌。第一个成功到达服务器的人获得了新的令牌,并用新的令牌重试了它的 http 调用。但是,所有其他调用都尝试使用相同的刷新令牌执行相同的操作,而无需等待第一个调用返回新令牌。这导致后端出现错误。
理想情况下,第一个返回 401 的 http 调用会经历获取新令牌的过程,而所有其他被拦截的调用会等待第一个调用完成。但是根据我发布的示例,我不知道如何“暂停”后者拦截 401 错误并等待第一次调用返回的令牌。
我正在使用可观察的。