Angular 6拦截器:在获得新令牌后再次请求

时间:2018-11-23 10:55:38

标签: angular angular6 interceptor

以下是我在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
        );
}

1 个答案:

答案 0 :(得分:0)

您正在从then块返回一个可观察的对象。您没有订阅,这就是为什么HttpRequest未完成的原因。使用fromPromise,通过管道将其插入catch并返回fromPromise调用,而不是of(error)