#angular
#angular
Вопрос:
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
let request = req.clone({
setHeaders: this.getRequestHeaders()
});
return next.handle(request).map((event: HttpEvent<any>) => {
if (event instanceof HttpResponse amp;amp; event.status==200) {
} else
console.log('event =', event, ';');
return event;
})
.catch((err: any, caught) => {
if (err instanceof HttpErrorResponse) {
let error=err['error']
// if (err['error'] amp;amp; (err['error']['status'] == 401) amp;amp; (err['error']['message']=="Session Expired,please login Again.") || err['error']['message']=="Full authentication is required to access this resource") {
// setTimeout(()=>{
// this.localStorageService.clearLocalStorage();
// return this.router.navigate(['/login']);
// }, 1000);
// }
return Observable.throw(error);
}
});
}
public getRequestHeaders(){
let token=this.localStorageService.getToken();
let headers={'Accept': 'application/json'};
if(token){
headers['Authorisation']=token;
}
return headers;
}
Я внедрил службу перехватчика, но токен не передается при
передаче в заголовке, и из-за этого ничего не работает. Я извлекаю
токен из локального хранилища, но ничего не показываю
Комментарии:
1. Попробуйте зарегистрировать токен
2. токен показывает значение null, потому что локальное хранилище будет пустым перед входом в систему
3. Сначала вам нужно установить токен в localstorage, тогда только вы можете получить
4. Я уже сделал это
5. Вы сохранили как значение ключа?
Ответ №1:
Чтобы установить заголовок, вы должны создать экземпляр заголовка, подобный этому. Ниже приведен мой пример
private initAuthHeaders(): Headers {
const token = this.getLocalToken();
const headers = new Headers();
if (token !== null) {
headers.append('Authorization', 'Bearer ' token);
}
headers.append('Content-Type', 'application/json');
return headers;
}