簡體   English   中英

Angular攔截器http調用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM