Угловое обновление Token - PullRequest
       10

Угловое обновление Token

0 голосов
/ 02 ноября 2018

Я пытаюсь реализовать функциональность RefreshToken для моего приложения Ionic. Но, очевидно, функция никогда не выполняет .flatmap или .mergeMap. И я получаю мои старые 'token' и 'refreshToken' из локального хранилища. API использует следующий формат.

  {
  "token": "string",
  "refreshToken": "string"
}

Вот мой код.

intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return next.handle(request).catch((errorResponse: HttpErrorResponse) => {
        debugger;
        console.log("Errr Response RefreshTokenInterceptor------", errorResponse);
        debugger;
        const error = (typeof errorResponse.error !== 'object') ? JSON.parse(errorResponse.error) : errorResponse;
        let reqRefData = {
            "token": this.token,
            "refreshToken": this.refresToken
        }

        if (errorResponse.status === 401 && error.error.error === 'Token-Expired') {
            const http = this.injector.get(HttpClient);
            debugger
            let url = Base_Url + 'user/refresh-token';
            console.log(Base_Url + 'user/refresh-token');
            debugger;
            return this.http.post<any>(url, reqRefData)
                // .flatMap(data => {
                .mergeMap(data => {
                    debugger;
                    console.log("!!!!!Flatmap Data ", data);
                    localStorage.setItem('my_token', data.token);
                    debugger;
                    const cloneRequest = request.clone({ setHeaders: { 'Authorization': `Bearer ${data.token}` } });
                    debugger;

                    return next.handle(cloneRequest);
                });
        }

        return Observable.throw(errorResponse);
    });

}}

Я также пытался использовать .flatMap и .MergeMap. Что я тут не так делаю?

1 Ответ

0 голосов
/ 02 ноября 2018

Получаете ли вы сообщение об ошибке для циклической зависимости? Выполнение запроса HTTP изнутри перехватчика HTTP может быть причиной его выброса.

...