您可以创建一个HttpInterceptor
可以检查状态是否为 401,如果是,则注销用户并重定向到登录页面。做什么HttpInterceptor
是拦截每个请求和响应,并允许您执行一些特定操作,例如检查 servce 是否返回 401 状态。但是请注意它的工作原理range
,如果您将其包含在顶级模块中,那么它将拦截每个请求和响应interceptor
services
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
constructor(
private authService: AuthService
) { }
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request).pipe(
map((event: HttpEvent<any>) => event), // pass further respone
catchError((error: HttpErrorResponse) => {
// here will be catched error from response, just check if its 401
if (error && error.status == 401)
// then logout e.g. this.authService.logout()
return throwError(error);
}));
}
}
然后将其包含app.httpmodule
在提供者部分
providers: [
{
provide: HTTP_INTERCEPTORS,
useClass: AuthInterceptor,
multi: true
},
]
在angular.io 文档或angular.io 指南中阅读更多信息