Цель - токен доступа включен в запрос для просмотра пользовательского c контента, такого как профиль, заказы и т. Д. c. Теперь, когда такие ресурсы запрашиваются из приложения angular, я проверяю действительность токена доступа и, если срок его действия истек, тогда возвращаю указанный код c - ERR_TKN_EXP из моего бэкэнда, в перехватчике я проверяю эту ошибку код и, соответственно, хотите запустить HTTP-запрос для создания нового токена на серверной части. Здесь HTTP-запрос не инициализируется из Interceptor.
Что я пробовал:
Interceptor:
return next.handle(request).pipe(catchError(err => {
//const error = err.error.message || err.statusText;
const resError = err.error;
// Handle token expired case to generate a new token
if (err.status === 401 && resError.error.code == 'ERR_TKN_EXP') {
this.authService.refreshToken();
}
}))
AuthService - функция refreshToken.
refreshToken(){
this.generate_ac_tkn = true;
let refTokenParams = {
'auth-token' : this.ac_tkn,
}
alert("refreshToken");
return this.http.post(API_END_POINT + 'refresh-token', refTokenParams, {withCredentials: true})
.map((res: Response) => {
alert("refreshToken-Call");
});
}
Согласно приведенному выше коду, когда сервер возвращает код ERR_TKN_EXP, перехватчик проверяет этот код и, соответственно, вызывает функцию для обновления sh токена. Когда я попытался отследить проблему, « refreshToken » предупрежден, но не может видеть окно предупреждения для « refreshToken-Call », что означает, что запрос HTTP http не выполняется.
Кто-нибудь может подсказать, что здесь пошло не так.
Спасибо.