在firebase getIdToken之后使用拦截器重试http调用

时间:2019-03-06 11:50:52

标签: angular firebase firebase-authentication

我正在使用拦截器来管理http调用。当出现401错误时,我想调用firebase刷新令牌,然后使用更新的标头重试初始请求。

拦截器:

intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return next.handle(request).pipe(tap((event: HttpEvent<any>) => { },
        error => {
            if (error instanceof HttpErrorResponse) {
                if (error.status === 401) {
                    this.authService.refreshToken().then(token => {
                        const clonedRequest = request.clone({ headers: request.headers.set('Bearer ', token) });
                        return next.handle(clonedRequest);
                    });
                }
            }
        }));
}

AuthService刷新功能:

refreshToken() {
    return this.fireAuth.auth.currentUser.getIdToken(true);
}

获得新令牌后,我似乎无法再次拨打电话。

0 个答案:

没有答案