Обновить токен после ответа - просмотр не обновляется / все запросы не запускаются -HttpInterceptor - PullRequest
0 голосов
/ 15 марта 2019

Я столкнулся с проблемой в маркере обновления, как только я получил новый токен, запрос отправлен, и я получаю ответ, но представление не обновляется. А также все запросы не отправлены, только несколько запросов отправлено.

Поскольку в случае истечения срока действия токена ответ об ошибке равен 200. Вместо Catch Error используется код. Пожалуйста, найдите код ниже, любая помощь будет очень признательна

 intercept(request: HttpRequest<any>, next: HttpHandler):
    Observable<HttpSentEvent | HttpHeaderResponse | HttpProgressEvent | HttpResponse<any> | HttpUserEvent<any> | any> {
    return next.handle(this.addTokenToRequest(request, this.authService.getToken())).pipe(
      tap(event => {
          if (errorCode === 'E101') {
            return <any>this.handle401Error(request, next);
          }
      })
    );

}
 handle401Error(request: HttpRequest<any>, next: HttpHandler) {
    if (!this.isRefreshToken) {
      this.isRefreshToken = true;
      this.tokenSubject.next(null);

      return this.LoginService.refreshToken().pipe(
        switchMap(user => {
          if (user) {
            this.tokenSubject.next(user.token);
            this.authService.loggedIn.next(null);
            this.authService.loggedIn.next(user);
            return next.handle(this.addTokenToRequest(request, user.token));
          }
          return <any>this.authService.logout();
        }),
        catchError(err => {
          return <any>this.authService.logout();
        }),
        finalize(() => {
          this.isRefreshToken = false;
        })
      ).subscribe();
    } else {
      this.isRefreshToken = false;
      console.log(this.tokenSubject, 'tokenSubject');
      return this.tokenSubject.pipe(
        filter(token => token != null),
        take(1),
        switchMap(token => {
          return next.handle(this.addTokenToRequest(request, token));
        })
      );
    }
  }
...