代码之家  ›  专栏  ›  技术社区  ›  Blake Rivell

在角HttpInterceptor中添加是否向req.clone添加头的逻辑

  •  0
  • Blake Rivell  · 技术社区  · 7 年前

    我想在HttpInterceptor的以下逻辑中添加一个if语句:

    const authToken = this.auth.getAuthorizationToken();
    
    const authReq = req.clone({
         headers: req.headers.set('Authorization', `Bearer ${authToken}`)
    });
    

    在用authToken更新头之前,我想检查authToken是否存在。我很确定这是一个语法问题,或者有另一种方法来设置代码块中req.clone()的headers属性。

    let authReq: HttpRequest<any> = req;
    
    if (authToken) {
      authReq = req.clone({
        headers: req.headers.set('Authorization', `Bearer ${authToken}`)
      });
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Teddy Sterne    7 年前

    你在正确的轨道上。如果令牌存在,则需要修改请求,如果没有令牌,则保持不变。例子:

    intercept(
      req: HttpRequest<any>,
      next: HttpHandler,
    ): Observable<HttpEvent<any>> {
      const authToken = this.auth.getAuthorizationToken();
    
      if (authToken) {
        req = req.clone({
          headers: req.headers.set('Authorization', `Bearer ${authToken}`)
        });
      }
    
      return next.handle(req);
    }
    
    推荐文章