angular – 尝试在http拦截器中进行重定向到403错误的登录页面
发布时间:2020-12-17 17:07:52 所属栏目:安全 来源:网络整理
导读:我试图制作一个http拦截器,如果附加401或403错误,它会重定向到登录页面.拦截器没问题,但是当我执行“router.navigate”时,我有一个错误:“无法读取未定义的属性’导航’”. 我的http拦截器: @Injectable()export class RedirectHttp extends Http {constru
我试图制作一个http拦截器,如果附加401或403错误,它会重定向到登录页面.拦截器没问题,但是当我执行“router.navigate”时,我有一个错误:“无法读取未定义的属性’导航’”.
我的http拦截器: @Injectable() export class RedirectHttp extends Http { constructor(protected backend: ConnectionBackend,protected defaultOptions: RequestOptions,private router: Router,private loginUrl: string) { super(backend,defaultOptions); } ... intercept(observable: Observable<Response>): Observable<Response> { return observable.catch(this.handleError) as Observable<Response>; } private handleError(error: any): any { if (error.status === 401 || error.status === 403 && !error.url.endsWith("/" + this.loginUrl)) { this.router.navigate([this.loginUrl]); return Observable.empty(); } else { return Observable.throw(error); } } } application.Module.ts上的声明: @NgModule({ declarations: [...],entryComponents: [...],imports: [ BrowserModule,routing,FormsModule,ReactiveFormsModule,HttpModule,],providers: [ appRoutingProviders,{provide: Http,useFactory: (xhrBackend: XHRBackend,requestOptions: RequestOptions,router: Router) => new RedirectHttp(xhrBackend,requestOptions,router,LOGIN.path),deps: [XHRBackend,RequestOptions,Router] } ],bootstrap: [ApplicationApp] }) export class AppModule { } 我认为路由器注入有一个错误,但我找不到. 解决方法
我有同样的问题,唯一帮助我重定向的是:
intercept(observable: Observable<Response>): Observable<Response> { return observable.catch((error) => { if (error.status === 401 || error.status === 403) { this.router.navigate([this.loginUrl]); } return this.handleError(error); }); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |