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