我目前在控制臺中收到 401 未經授權的錯誤,試圖訪問我構建的受保護的 API 端點。我注意到我沒有將不記名令牌添加到標題中。
我注意到了這一點并添加了這個但是我仍然收到 401 錯誤,我做錯了什么?我知道令牌是有效的,因為我正在 Postman 中進行測驗,并且在 Postman 中得到 200 回應代碼,但在 Angular 中得到 401。
這是我的代碼:
let token = localstorage.get('token');
getCategories() : Observable<any> {
let token = localStorage.getItem("token");
const headers = new HttpHeaders();
headers.append('Content-Type', 'application/json');
headers.set('Authorization', `Bearer ${token}`);
return this.http.get(this.CategoriesUrl, { headers: headers} )
}
uj5u.com熱心網友回復:
新HttpHeader類的實體是不可變物件。呼叫類方法將回傳一個新實體作為結果。因此,您需要執行以下操作:
let headers = new HttpHeaders();
header = header.set('Auth', 'Bearer ' token )
uj5u.com熱心網友回復:
Setvs Append- 使用附加。
append 方法將一個新值附加到標頭的現有值集并回傳一個新實體。append 方法不檢查值是否存在。
Sets 方法在修改給定標頭后回傳一個新實體。如果標頭已存在,則將其值替換為回傳物件中的給定值。
headers.append('Authorization', `Bearer ${token}`);
雖然我建議制作一個攔截器,為所有查詢設定標題。
import { Injectable } from '@angular/core';
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';
import { Observable } from 'rxjs';
import { environment } from '@environments/environment';
import { AuthenticationService } from '@app/_services';
@Injectable()
export class JwtInterceptor implements HttpInterceptor {
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const token = localStorage.getItem("token");
request = request.clone({
setHeaders: {
Authorization: `Bearer ${currentUser.token}`
}
});
return next.handle(request);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/497710.html
標籤:C# 有角度的 asp.net-mvc jwt 不记名令牌
