我更新了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,则无法使用。
答案 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')}`)
});