получаю в интерцепторе, мол если запрос возвращает 401, трай гет ньютокен, все ок токен новый.
Как повторить запрос который только что вернул 401 уже с новым токеном??
ofc без перезагрузки
Спасибо
В return надо кэтчить, и возвращать клонированный исходный запрос. В интерсепторе
на уровне интерсептора (это копия с моего проекта, думаю детали сам разберешь) return handler.handle(this.appendBearerTokenToRequest(request, accessToken)).catch((error: any, caught) => { if (error instanceof HttpErrorResponse) { if (error.status === 401) { // if we have this error, we need to update the tiken and repete the request return this.authenticationService.refreshToken().map( _ => { accessToken = this.authenticationService.getAccessToken(); // Update the token value // repete request return handler.handle(this.appendBearerTokenToRequest(request, accessToken)).catch( (errorSec: any, caughtSec) => { // updated token is invalid if (errorSec instanceof HttpErrorResponse) { // We couldn't refresh the user's access token so we redirect him to the login if (errorSec.status === 401) { this.authenticationService.redirectToLogin(); } return Observable.throw(errorSec); } } ); }).concatMap(newRequest => newRequest); } } else { // this is not authorization error return Observable.throw(error); } } );
Обсуждают сегодня