Angular 7 Http получить запрос функции выхода? - PullRequest
0 голосов
/ 06 марта 2019

В моем проекте Angular есть функция, которая отправляет запрос get в бэкэнд REST и что-то делает с данными.Ничего особенного.Это в authservice.ts.

Этот метод вызывается из перехватчика.Однако, прежде чем запрос будет завершен, перехватчик вызывает handleAuthError (), потому что метод возвратил false (как ??), пока запрос не был выполнен.Я вижу это, потому что ничего не произошло в бэкэнде.Затем приложение отправляет запрос и может обработать данные.

Кто-нибудь сталкивался с этой проблемой или мог бы подсказать, как мне это исправить?

// api.interceptor.ts

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
      return next.handle(request).pipe(tap(data => {
      return data;
    },
    error => {
      // if (request.url.indexOf('/refresh') !== -1) {
        // Already attempted to refresh the token. Log out
        // this.authService.handleAuthError();
      // } else {
        // If the token can't be refreshed then log out.
        if (!this.authService.refreshJwt(this.tokenService.get())) {
          this.authService.handleAuthError();
        }
      // }
    }));


// auth.service.ts

refreshJwt(token: string): boolean {
  if (token == null || token.length <= 0) { return false; }

  const requestUrl = this.apiUrl + '/refresh';

  const requestOptions = {
    headers: new HttpHeaders({
      Authorization: `Bearer ` + this.tokenService.get()
    }),
  };

  this.http.get(requestUrl, requestOptions).subscribe(
    data => {
      // return true;
      return this.handleJwtResponse(data);
    }, error => {
      return false;
    }
  );
}
...