Angular 拦截器和 router.navigate() 会导致 safari 出现问题吗?

时间:2021-05-02 07:40:50

标签: angular safari angular-ui-router interceptor angular-http-interceptors

我已将 API 中的 accessToken 存储在本地存储中。我可以使用拦截器毫无问题地调用 API.....

import { HttpInterceptor, HttpRequest, HttpHandler } from '@angular/common/http';
import { Injectable } from '@angular/core';

@Injectable()
export class AuthInterceptor implements HttpInterceptor {


  constructor() {}

  intercept(req: HttpRequest<any>, next: HttpHandler) {

    let authRequest = req;
    const authToken = localStorage.getItem('token');
    if (authToken) {
      console.log('injecting bearer token');
      authRequest = req.clone({
      headers: req.headers.set('Authorization' , 'Bearer ' + [authToken])
    });
    } else {
      console.log('not injecting bearer token');
    }

    return next.handle(authRequest);

  }

}

但是,当我转到使用附加组件路由的另一个页面时...

singleToggle() {
    this.router.navigate(['singleItem', this.id]);
    this.singleItem = !this.item;
  }

拦截器未正确加载,API 声明我未登录且语言环境存储中的 accessToken 显示为 null。这只发生在 safari 上。 Chrome、Edge 和 Firefox 工作正常。

0 个答案:

没有答案