繁体   English   中英

在 http 请求之前执行的 Angular 拦截器

[英]Angular interceptor executed before http request

我正在使用 MEAN 应用程序,但在使用令牌拦截器时遇到了问题。 它应该在用户使用以下代码登录后应用标题:

 intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {
    const token = localStorage.getItem('token');
    let req = request;
    if (token) {
      req = request.clone({
        setHeaders: {
          authorization: `Bearer ${token}`
        }
      });
    }
 }

但是,我调试了代码,它在登录调用 api 之前执行(因此没有登录、没有令牌、没有用户数据等)。 因此它没用,因为我需要令牌来设置标题,如代码所示。

您可以将它与管道和水龙头(或任何其他 RxJs 运算符)结合使用,以在响应调用到达您的服务之前对其进行操作。

记录请求和响应对

intercept(req: HttpRequest<any>, next: HttpHandler) {
       // change req here before being send
           
        return next.handle(req)
          .pipe(
            tap(
              // to access data, or use map to manipulate it.
            )
          );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM