我正在使用拦截器来管理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);
}
获得新令牌后,我似乎无法再次拨打电话。