Я использую HttpInterceptor
в Angular 6 и пытаюсь создать механизм токена обновления:
Когда запрос httpClient получает 401
код состояния (неавторизованный), HttpInterceptor
создаст запрос, который обновит токен, он обновит заголовки первого запроса и вызовет его снова с новым токеном.
Код работает до тех пор, пока мне не нужно снова вспомнить исходный запрос с новым токеном, полученным из запроса токена обновления. Это мой код:
export class MyInterceptor implements HttpInterceptor {
constructor(public restService:RestService){}
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request).pipe(
tap(event => {
if (event instanceof HttpResponse) {
console.log('succeed');
}
}, error => {
if(error.status==401){
this.restService.refreshToken().subscribe(response => {
this.restService.updateHeaders(response['token']);
const newRequest = request.clone();
return next.handle(newRequest);
});
}
})
)
}
}