Авторизация токена на предъявителя Angular 6 не работает - PullRequest
0 голосов
/ 01 января 2019

Я новичок в Angular и работаю над проектом.Мне нужно установить токен носителя для некоторых вызовов API.Это то, что я пробовал.

getData(){
this.apiService.get('Services/getall', true).subscribe((data) => {
    console.log("data" + data);
},error => {

return throwError(error);  
});
}

Метод APIService.get

/* Make get request to API*/
        get(url: string, authorized: boolean = false ) : Observable<any> {
        return this.http.get<any>(apiUrl + url, { headers: this.getHeaders(authorized) }).pipe(catchError(this.errorHandler));
    }

Если API нужен маркер переноса

    /**
* set authorization headers
*/
getHeaders(authorized: boolean) {
    let userToken = localStorage.getItem('userToken');

    const headers = new HttpHeaders({ 'Content-Type': 'application/json' });
    if (authorized) {
        headers.append('Authorization', 'Bearer ' + userToken);
    }   
    return headers;

}

Но это не работает.Я получаю 401 ошибку.API работает без проблем, когда я пытаюсь с Почтальоном.

Не могли бы вы помочь мне решить.

1 Ответ

0 голосов
/ 01 января 2019

HttpHeaders.append не изменяет ваши существующие заголовки.Вместо этого он возвращает клон с добавленной новой записью.Поэтому вам нужно снова назначить его заголовкам.

let headers = new HttpHeaders({ 'Content-Type': 'application/json' });
    if (authorized) {
        headers = headers.append('Authorization', 'Bearer ' + userToken);
    } 

Кроме того, я думаю, вам не нужно устанавливать json contentType.Angular сделает это вам, если потребуется.

Возможно, вы захотите в будущем использовать HTTP Interceptor , чтобы автоматически добавлять канал-носитель ко всем вашим запросам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...