在Angular HttpInterceptor中添加是否添加标头或向req.clone添加逻辑

时间:2018-08-21 15:11:12

标签: angular typescript angular-http-interceptors

我想在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 个答案:

答案 0 :(得分:1)

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

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);
}