в интерцепторе после того, как получаю 401 код по запросу из компонента. И повторно отправляю запрос. Всё работает, данные в повторном запросе приходят. Но компонент, инициировавший запрос думает, что запрос упал с ошибкой 401 и, сооветственно, в шаблон данные не попадают
Сталкивался кто с такой проблемой? Как объяснить компоненту чутку подождать и принять в себя данные?
Заранее спасибо за ответ!)
В catchError можно повторить упавший запрос
Всем привет, доброе утро! Нашлось решение. Спасибо @MikalaiR Пример кода прикладываю: headers = accessToken ? headers.set('Authorization', 'Bearer ' + accessToken) : headers; request = request.clone( { headers: headers, withCredentials: true } ); return next.handle(request) .pipe( catchError( (error: HttpErrorResponse) => { if (error.status === 400) { this.authService.logout(); } if (error.status === 401) { const params = { refreshToken: refreshToken }; return this.authService.refresh(params) .pipe( mergeMap( (res: any) => { AuthService.setTokens(res); refreshRequestAccessToken(); return next.handle(request); } ) ); } } ), ); function refreshRequestAccessToken() { const newAccessToken = AuthService.getAccessToken(); headers = accessToken ? headers.set('Authorization', 'Bearer ' + newAccessToken) : headers; request = request.clone( { headers: headers, withCredentials: true } ); } Всем хорошей разработки!)
Обсуждают сегодня