在提供刷新令牌后重新启动最后一个失败的请求
Re Initaite the last failed request after refresh token is provided
我有我的 angular 4 应用程序,它同时一个接一个地向受 OAuth2 保护的 API 发送多个请求,当请求失败并显示 401 状态时,我遇到了问题代码,我需要生成一个新的访问令牌并向 API 和 return 重新发起相同的请求,以响应等待它的方法。
1-所有请求一个接一个地失败-所以为了让其他请求继续进行,我添加了一个循环,当令牌生成正在进行时,该循环将请求发送到服务器
2-为了启动请求,我在块中再次添加了行 next.handle(request)
但没有工作,然后我尝试调用 this.intercept(request,next)
方法,即使它没有工作,之后我添加的最后一种方法是重新处理错误块中的请求,所以现在拦截方法的代码如下所示,但后来我意识到即使我重试处理请求,请求也没有得到进一步处理。有几个教程简单地建议 next.handle(request)
,但在我的情况下它没有按预期工作。
只有我成功地处理了失败请求之后的请求,因为到那时新的访问令牌已生成,但失败的请求只是丢弃了。
请参阅 link!
中的代码流程
我已经花了很多时间调试
我可以通过在拦截方法中添加 Observable.fromPromise
然后调用 returns promise 的方法来实现这一点,并且递归调用该方法直到我获得刷新令牌,但是添加每次调用之间的延迟,这样我就不会多次递归调用。
我的代码请参考这个link。
如果遇到任何问题,请发表评论。
我有我的 angular 4 应用程序,它同时一个接一个地向受 OAuth2 保护的 API 发送多个请求,当请求失败并显示 401 状态时,我遇到了问题代码,我需要生成一个新的访问令牌并向 API 和 return 重新发起相同的请求,以响应等待它的方法。
1-所有请求一个接一个地失败-所以为了让其他请求继续进行,我添加了一个循环,当令牌生成正在进行时,该循环将请求发送到服务器
2-为了启动请求,我在块中再次添加了行 next.handle(request)
但没有工作,然后我尝试调用 this.intercept(request,next)
方法,即使它没有工作,之后我添加的最后一种方法是重新处理错误块中的请求,所以现在拦截方法的代码如下所示,但后来我意识到即使我重试处理请求,请求也没有得到进一步处理。有几个教程简单地建议 next.handle(request)
,但在我的情况下它没有按预期工作。
只有我成功地处理了失败请求之后的请求,因为到那时新的访问令牌已生成,但失败的请求只是丢弃了。
请参阅 link!
中的代码流程我已经花了很多时间调试
我可以通过在拦截方法中添加 Observable.fromPromise
然后调用 returns promise 的方法来实现这一点,并且递归调用该方法直到我获得刷新令牌,但是添加每次调用之间的延迟,这样我就不会多次递归调用。
我的代码请参考这个link。 如果遇到任何问题,请发表评论。