Я новичок в angular 8. У меня есть перехватчик:
export class HttpRequestInterceptor implements HttpInterceptor {
private apiAddress = 'http://localhost:1080';
private refreshTokenIsInProgress = false;
intercept(
request: HttpRequest<any>,
next: HttpHandler
): Observable<HttpEvent<any>> {
let cloneReq;
//...
// some codes like adding access token to header
//...
cloneReq = request.clone();
return next.handle(cloneReq)
.pipe(
catchError((error: any) => {
if(error.status==401)//means token expired
{
//Here i need help
//Get NEW Token And Replace With previous And Resend Current Request
}
return of(error);
})
)
;
}
}
export const httpInterceptorProviders = [
{ provide: HTTP_INTERCEPTORS, useClass: HttpRequestInterceptor, multi: true },
];
мои запросы похожи на:
return this.http.get(url).subscribe();
Как я уже говорил, если запрос возвращает 401 ( не авторизован) Мне нужно получить новый токен (JWT) с сервера, заменить его на предыдущий и затем повторно отправить CURRENT-запрос; нет проблем с получением нового токена! проблема заключается в замене нового токена и повторной отправке запроса;
я искал и гуглил форму много часов, но ... я думал, что смогу достичь ее с помощью retry () и retryWhen ( ) , но они не могут изменять параметры запроса. спасибо всем дружище