Angular HttpInterceptor не работает с первым запросом после входа в систему - PullRequest
1 голос
/ 12 мая 2019

Я провожу 2 дня с этой проблемой, не могу найти решение.

У меня проблема с угловым перехватчиком HTTP в проекте Ionic 4.

После успешного входа в систему маршрутизатор переходит на домашнюю страницу и вызывает некоторый API с токеном.

При успешном входе в систему я сохраняю токен в localStorage и использую этот токен в перехватчике HTTP, На домашней странице токен не был впервые указан в заголовке авторизации.

Если я обновлю приложение, то оно будет нормально работать, Здесь я прикрепил мой фрагмент кода ниже.

HTTP INTERCEPTOR:

    intercept(httpReq: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        if (localStorage.getItem('tokenKey')) {
            const token = localStorage.getItem('tokenKey');
            const req = httpReq.clone({
                setHeaders: {
                    'Authorization': 'Bearer ' + token,
                    'Content-Type': 'application/json'
                }
            });
            return next.handle(req);
        } else {
            const req = httpReq.clone({
                headers: httpReq.headers.set('Content-Type', 'application/json'),
            });
            return next.handle(req);
        }
}

Вот мой код для входа в систему

 login() {
    this.authService.login(this.user)
        .then((data: any) => {
            this.events.publish('user:created', data.profile);
            this.events.publish('token:created', data.token);
            if (data.token) {
             this.router.navigate(['home']);
          }
      }).catch(error => {
         this.presentAlert(error);
      });
}

Вот код услуги входа:

login(user) {
return new Promise((resolve, reject) => {
    this.http.post(ApiEndPoint + 'signin/index', user).subscribe((data: any) => {
        localStorage.setItem('tokenKey', data.data.token);
        this.authState.next(true);
        resolve(data.data);
    }, err => {
        reject(err);
    });
});}
...