Jhipster / Angular 7 - Как подписаться на повторный запрос, сделанный перехватчиком? - PullRequest
1 голос
/ 30 апреля 2019

Я работаю над проектом с JHipster 5.8.2 и хочу добавить возможность повторного входа в систему без перенаправления. Таким образом, пользователи не теряют свои данные. Проблема в том, что мои компоненты подписаны на исходный запрос (тот, который не работает, потому что токен больше не действителен), и я хотел бы подписаться на запрос повторной попытки. Есть ли способ, которым я могу сделать это? Ниже приведены фрагменты значимого кода

AuthExpiredInterceptor.ts

    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        return next.handle(request).pipe(
            catchError((error, caught) => {
                if (error instanceof HttpErrorResponse && error.status === 401) {
                    this.refreshToken(error).pipe(switchMap(
                        () => {
                            const token = this.localStorage.retrieve('authenticationToken') 
                                   || this.sessionStorage.retrieve('authenticationToken');
                            if (!!token) {
                                request = request.clone({
                                    setHeaders: {
                                        Authorization: 'Bearer ' + token
                                    }
                                });
                            }
                            // The request I want to subscribe
                            return next.handle(request);
                        })).subscribe();
                }
                return caught;
            }
            )
        );
    }

Подписка на результат

protected subscribeToSaveResponse() {
        let result=this.http.post<IObject>(this.resourceUrl, object, { observe: 'response' });
        result.subscribe((res: HttpResponse<IObject>) => this.onSaveSuccess(),
                        (res: HttpErrorResponse) => this.onSaveError());
}

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...