【发布时间】:2020-11-23 18:05:38
【问题描述】:
我目前无法像大多数应用程序那样拦截 401 状态并重定向到登录页面, 我的拦截几乎是样板
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
request = request.clone({
withCredentials: true
});
return next.handle(request)
.pipe(
retry(0),
takeUntil(this.httpCancelService.onCancelPendingRequests()), ==> cancels out pending request on route change
catchError((error: HttpErrorResponse) => {
if (error.status === 401) {
this.authenticationService.logout() ===> logout incase of 401
} else if (request.url.indexOf("assets") == -1) {
this.alertService.error('An unexpected error occurred, please try again later');
}
return throwError(errorMessage)
})
)
}
浏览器正在网络选项卡上将请求捕获为 401,但在这个 Angular 拦截器上, 我们得到 'error.status' 为 '0' & 'error.message' 为 'Unknown Error'
【问题讨论】: