[英]Angular interceptor http call
我有一個從他的后端獲取 JWT 的應用程序。 此 JWT 有效期為 15 分鍾。 當我將 JWT 從前端發送到后端時,HTTP 攔截器會將 Z1D1FADBD9150349C135781140FFFEEZDZ 附加到授權 Z3959FB995E346EF36。
我嘗試做的是:
在 Http 攔截器中檢查令牌是否仍然有效,如果沒有,則向后端端點發送請求以獲取新的 JWT。
我的問題是:如果我攔截對 append 和 header 的每個調用,如果我在攔截器本身中執行 http 請求,我將進入一個循環。
這是我的攔截器:
intercept(req: HttpRequest<any>, next: HttpHandler) {
let authReq = req;
const token = this.userService.getUserInfo()?.token;
const jwtHelper: JwtHelperService = new JwtHelperService();
if (token != null) {
if (!jwtHelper.isTokenExpired(token)) {
authReq = req.clone({headers: req.headers.set(TOKEN_HEADER_KEY, 'Bearer ' + token)});
} else {
this.authenticationService.getToken();
return;
}
}
return next.handle(authReq);
}
這樣做的正確方法是什么?
服務器應該處理令牌的有效性,而不是客戶端的邏輯。
使用令牌發送請求,如果響應將具有 401/403/任何狀態,則發送對新令牌的請求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.