我们在Angular 4(目前在4.4.6)应用程序上使用和实现OAuth2,我们有以下场景:
问题在于,由于调用是异步的,因此该刷新服务被同时调用2次或更多次,从而生成各种令牌。应用程序有效,但这不是正确的行为。
每次通话我都有这样的事情:
odata(url) {
return this.http.get(this.URL, {
headers: headers
}).map(res => res.json()).catch(error => {
if (error.status === 401) {
return this.refreshToken().flatMap(resRefresh => {
localStorage.setItem('access_token', resRefresh.access_token);
return this.odata(url);
})
} else {
return Observable.throw(error);
}
});}
刷新令牌服务只是另一个带URL的调用。
这是有效的,但正如我所说,同时有两个或更多刷新调用。我的问题是,在我等待刷新响应时,是否有某种方法可以阻止第二个请求,然后重新打电话(比如,然后调用两个 - >两者都将401 - >所以调用刷新 - >刷新已经调用 - >所以等待 - >刷新没问题 - >重新调用两个调用。)
由于