Я столкнулся с проблемой в маркере обновления, как только я получил новый токен, запрос отправлен, и я получаю ответ, но представление не обновляется. А также все запросы не отправлены, только несколько запросов отправлено.
Поскольку в случае истечения срока действия токена ответ об ошибке равен 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));
})
);
}
}