Я работаю над получением нового токена JWT после истечения срока его действия с помощью токена обновления, а также повторно отправляю запрос, который не выполнен из-за моего JWT с истекшим сроком годности, я успешно могу сделать это с помощью приведенного ниже кода.
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (request.url.indexOf('Auth/refresh') !== -1) {
let headers = { Authorization: this.authService.getRefreshToken() };
request = request.clone({
setHeaders: headers
});
}
const customReq = request.clone({
// headers: request.headers.set('app-language', 'it')
});
return next
.handle(customReq)
.do((ev: HttpEvent<any>) => {
if (ev instanceof HttpResponse) {
})
.catch(response => {
if (response instanceof HttpErrorResponse) {
if (response.error.startsWith("ExpriedJWT") ){
console.log("Token Expired");
if (!this.refreshRequestSent) {
this.authService.refreshToken().subscribe((data: any) => {
console.log("Token Renewd");
this.sendFailedRequests(next);
this.refreshRequestSent = false;
});
this.refreshRequestSent = true;
}
this.failedRequests.push(customReq);
}
}
return observableThrowError(response);
});
}
private sendFailedRequests(next: HttpHandler) {
for (let i = 0; i < this.failedRequests.length; i++) {
next.handle(this.failedRequests[i]);
}
this.failedRequests = [];
}
Проблема в том, что подписчики запроса, получившего 401, и я негодую, больше не слушают, и хотя я получаю ответ на него. Это не имеет никакого смысла для меня. Итак, вернемся к моему вопросу, как заставить этих абонентов продолжать слушать или работать в этом случае