刷新令牌更改时,Angular会重播http调用

时间:2019-01-19 19:18:05

标签: angular rxjs firebase-authentication

我在Angular v6中面临一种奇怪的行为。订阅时可能丢失了一些大东西。

只要刷新令牌过期(在不使用该应用程序的空闲时间后),该应用程序replays就会处理所有先前的http事件。

以下是我要重现此问题的方法。

  1. 登录到我的角度应用程序并进行一些N http呼叫(GET, POST and DELETE
  2. firebase refresh auth token indexedDB中删除firebaseLocalStorage

第2步触发并重播我在第1步中进行的所有http调用。

但是它不应该重播所有过去的http事件。可能是什么原因?

我的http拦截器代码在https://gist.github.com/kumar-muthu/87c1404d3da48702739183e8d2c6e7d5

注意:我不会退订http的可观察对象,因为我假设一旦收到http响应,Angular httpclient就会关闭订阅。

1 个答案:

答案 0 :(得分:0)

问题出在拦截器上。我已经订阅了令牌,而不仅仅是获取最新的令牌。因此,每次令牌更改时,所有先前的http请求都会再次重播。

https://gist.github.com/kumar-muthu/87c1404d3da48702739183e8d2c6e7d5#file-so_angular_http_inteceptor-ts-L47