Как добавить токен авторизации в HTTP-запрос - PullRequest
0 голосов
/ 14 мая 2019

Я получаю 401 несанкционированную ошибку при достижении моей конечной точки отдыха, это потому, что я добавил безопасность, я не уверен, правильно ли я выполняю часть заголовков http.

приложение использует API-интерфейс rest boot backend, я знаю, что оно работает, потому что когда я получаю токен через почтальон и снова использую этот токен авторизации в postman для доступа к API, он отлично работает.

getWeatherByCityAndCountry(city: string, country: string): Promise<Weather> {

    let headers = new HttpHeaders();
    headers = headers.append('Authorization', 'Bearer '+ this.accessToken);
    return this.http.get(this.baseUrl + '/byCity/' + city + '/' + country, {headers: headers})
      .toPromise()
      .then(response => response as Weather)
      .catch(this.handleError)
  }

accessToken был жестко закодирован с использованием значения токена от почтальона.

1 Ответ

2 голосов
/ 14 мая 2019

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

import {
  Observable
} from 'rxjs';
import {
  Injectable
} from '@angular/core';
import {
  HttpEvent,
  HttpInterceptor,
  HttpHandler,
  HttpRequest
} from '@angular/common/http';

@Injectable()
export class HttpInterceptorService implements HttpInterceptor {
  constructor() {}

  intercept(req: HttpRequest < any > , next: HttpHandler): Observable < HttpEvent < any >> {
    const responseType = req.responseType || 'json';
    const apiToken = localStorage.getItem('Authorization');
    const authed = req.clone({
      headers: req.headers.set('Authorization', 'Bearer ' + apiToken),
      responseType
    });
    const notAuthed = req.clone({
      responseType
    });
    const authReq = apiToken ? authed : notAuthed;

    return next.handle(authReq);
  }
}

Добавьте следующее в ваш массив поставщиков модулей.

{
      provide: HTTP_INTERCEPTORS,
      useClass: HttpInterceptorService,
      multi: true
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...