授权承载令牌Angular 6无法正常工作

时间:2019-01-01 09:03:59

标签: angular authorization bearer-token

我是Angular的新手,正在从事一个项目。我需要为某些API调用设置承载令牌。这就是我尝试过的。

getData(){
this.apiService.get('Services/getall', true).subscribe((data) => {
    console.log("data" + data);
},error => {

return throwError(error);  
});
}

APIService.get方法

/* Make get request to API*/
        get(url: string, authorized: boolean = false ) : Observable<any> {
        return this.http.get<any>(apiUrl + url, { headers: this.getHeaders(authorized) }).pipe(catchError(this.errorHandler));
    }

如果API需要承载令牌

    /**
* set authorization headers
*/
getHeaders(authorized: boolean) {
    let userToken = localStorage.getItem('userToken');

    const headers = new HttpHeaders({ 'Content-Type': 'application/json' });
    if (authorized) {
        headers.append('Authorization', 'Bearer ' + userToken);
    }   
    return headers;

}

但这不起作用。我收到401错误。当我尝试使用Postman时,API可以正常工作。

能否请您帮我解决。

1 个答案:

答案 0 :(得分:1)

HttpHeaders.append不会修改您现有的标头。而是返回添加了新条目的克隆。因此,您需要再次将其分配给标题。

let headers = new HttpHeaders({ 'Content-Type': 'application/json' });
    if (authorized) {
        headers = headers.append('Authorization', 'Bearer ' + userToken);
    } 

此外,我想您不需要设置json contentType。如果需要的话,Angular会为您服务。

您将来可能希望使用UICC(eUICC) Interoperable Format Technical Specification将承载自动添加到所有请求中