Jhipster / Angular 7-如何订阅拦截器发出的重试请求?

时间:2019-04-30 07:02:42

标签: angular rxjs jhipster

我正在使用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());
}

预先感谢

0 个答案:

没有答案