以下是我在Angular 7中的拦截器问题: 当我从后端api获得401(未经授权)时,刷新令牌成功,但请求不再执行。谁能帮我吗?
谢谢!
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request)
.pipe(
catchError((error: any, caught: Observable<HttpEvent<any>>) => {
if (error.status === 401) {
this.oauthService = this.injector.get(OAuthService);
this.oauthService.silentRefresh().then(() => {
return next.handle(request);
}).catch(() => this.oauthService.logOut());
}
return of(error);
}) as any
);
}
答案 0 :(得分:0)
您正在从then块返回一个可观察的对象。您没有订阅,这就是为什么HttpRequest未完成的原因。使用fromPromise
,通过管道将其插入catch并返回fromPromise调用,而不是of(error)
。