代码之家  ›  专栏  ›  技术社区  ›  Chris

Angular 10不再通过拦截器向请求添加头

  •  0
  • Chris  · 技术社区  · 4 年前

    在过去的5个版本中,我有一些代码对我来说是完美的。

    一旦升级到Angular 10,它就不再在报头上设置承载令牌。我在升级说明中没有看到任何关于修改HTTP客户端或如何工作的内容。

    我的代码现在有什么小问题吗?有人必须处理吗?

      private async handleAccess(request: HttpRequest<any>, next: HttpHandler): Promise<HttpEvent<any>> {
        await this.angularFireAuth.user.subscribe((user) => {
          user.getIdToken().then(
            (token) =>
              (request = request.clone({
                setHeaders: {
                  Authorization: 'Bearer ' + token,
                },
              }))
          );
        });
    
        return next.handle(request).toPromise();
      }
    
    0 回复  |  直到 4 年前
        1
  •  0
  •   Chris    4 年前

    我设法使事情恢复正常。一定是流出了问题,利用管道+合并映射,我得到了预期的行为

      intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        return this.angularFireAuth.idToken.pipe(
          mergeMap((token) => {
            return next.handle(
              request.clone({
                setHeaders: {
                  Authorization: 'Bearer ' + token,
                },
              })
            );
          })
        );
      }