Angular 6 - добавление токена-носителя JWT в заголовок не работает - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь добавить заголовок токена носителя аутентификации при получении комментария от ядра 2.2 ядра asp.net в угловом формате 6

getComment(postId: number): Observable<IComment[]>{
    let headers = new HttpHeaders();
    headers.append('Content-Type', 'application/json');
    let authToken = localStorage.getItem('auth_token');
    headers.append('Authorization', 'Bearer ' + authToken);
    console.log(authToken);
    return this.httpClient.get<IComment[]>('api/comment/post/' + postId, { headers });
  }

Этот фрагмент кода не работает.Я получаю значение из console.log (authToken).Когда я копирую токен в Почтальон, все работает нормально.

Моя функция входа в сервис.Это работает нормально, я получаю токен от бэкэнда.

 login(login: ILogin) {
    console.log(login);
    return this.http
      .post('api/auth/login', login)
      .pipe(map((res: any) => {
        localStorage.setItem('auth_token', res.auth_token);
        this.loggedIn = true;
        this._authNavStatusSource.next(true);
        return true;
      }));
  }

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

Почтальон: Postman

Заголовок информации из хрома Header Information

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Вы не передаете заголовки в разделе { headers }.Изменить return this.httpClient.get<IComment[]>('api/comment/post/' + postId, { headers }); на return this.httpClient.get<IComment[]>('api/comment/post/' + postId, { headers: headers });

0 голосов
/ 24 сентября 2018

Когда вы говорите, что он работает нормально через Postman и что это не проблема CORS (т. Е. Либо включен CORS, либо ваш JS обслуживается из того же источника, что и ваш API), я предполагаю, что вы уже подписанык возвращенному Observable<IComment[]>.

Приведенный выше код не будет выдавать запрос до тех пор, пока не произойдет вызов где-то, похожий на этот:

yourService.getComment(postId).subscribe(comments => { ... });

, который начнет потреблять Observableи вызвать базовый HTTP-запрос.

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