授权不记名令牌 Angular 6 不工作
Authorization bearer token Angular 6 not working
我是 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 错误。 API 在我尝试使用 Postman 时没有任何问题。
能不能帮我解决一下。
HttpHeaders.append 不会修改您现有的 Headers。相反,它 returns 添加了新条目的克隆。因此,您需要再次将其分配给 headers。
let headers = new HttpHeaders({ 'Content-Type': 'application/json' });
if (authorized) {
headers = headers.append('Authorization', 'Bearer ' + userToken);
}
此外,我想您不需要设置 json contentType。如果需要,Angular 会为您做。
您将来可能希望使用 HTTP Interceptor 来自动将承载添加到您的所有请求中
我是 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 错误。 API 在我尝试使用 Postman 时没有任何问题。
能不能帮我解决一下。
HttpHeaders.append 不会修改您现有的 Headers。相反,它 returns 添加了新条目的克隆。因此,您需要再次将其分配给 headers。
let headers = new HttpHeaders({ 'Content-Type': 'application/json' });
if (authorized) {
headers = headers.append('Authorization', 'Bearer ' + userToken);
}
此外,我想您不需要设置 json contentType。如果需要,Angular 会为您做。
您将来可能希望使用 HTTP Interceptor 来自动将承载添加到您的所有请求中