Несанкционированная ошибка, хотя токен загружен правильно - PullRequest
0 голосов
/ 19 сентября 2018

Я обновил свое приложение Angular 6, чтобы оно использовало библиотеку auth0 / angular2-jwt .После того, как я обновил свои сервисы сейчас, я получаю ошибку 401 Unauthorized от моего API, хотя токен правильно прикреплен к заголовку.

К любым запросам, отправленным с использованием HttpClient от Angular, автоматически будет добавлен токен в качестве заголовка авторизации.

Документация для этого: Использование инъекции

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

app.module.ts

import { JwtModule } from '@auth0/angular-jwt';
import { HttpClientModule } from '@angular/common/http';

imports: [
    BrowserModule,
    FormsModule,
    ReactiveFormsModule,
    HttpClientModule,
    JwtModule.forRoot({
      config: {
        tokenGetter: () => {
          return localStorage.getItem('id_token');
        },
        throwNoTokenError: true,
        whitelistedDomains: ['localhost:3000'],
      }
    }),

auth.service.ts

import { HttpClient } from '@angular/common/http';

  constructor(
    public http: HttpClient
  ) {}

  getProfile() {
    return this.http.get<profile>('http://localhost:3000/users/profile');
  }

Если я использую Postman с токеном из localStorage, все работает нормально, и я возвращаю правильные данные профиля.Если я использую свое Angular-приложение, оно не будет работать.

enter image description here

1 Ответ

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

Попробуйте это.

import {HttpClient, HttpHeaders} from '@angular/common/http';

return this.http
  .get('http://localhost:3000/users/profile', {
    headers: new HttpHeaders().set('Authorization', `Bearer ${this.localStorage.getItem('id_token')}`)
  });
...