尽管令牌已正确加载,但发生未经授权的错误

时间:2018-09-19 06:54:28

标签: angular auth0 angular2-jwt

我更新了Angular 6应用程序,使其使用了auth0/angular2-jwt库。现在,我更新了服务后,尽管令牌已正确附加到标头,但我的API却返回了一个401 Unauthorized错误。

  

使用Angular的HttpClient发送的任何请求都将自动附加一个令牌作为Authorization标头。

这是该文档:Usage Injection

据我正确理解,我不需要在要发出请求的任何时间加载令牌,而是将其附加到标头,因为它会自动加载。这是我的代码:

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-App,则无法使用。

enter image description here

1 个答案:

答案 0 :(得分:0)

尝试一下。

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')}`)
  });