angular2 – 用角度2处理全球401
发布时间:2020-12-17 08:26:27 所属栏目:安全 来源:网络整理
导读:在我的Angular 2项目中,我从返回Observable的服务中进行API调用。调用代码然后订阅这个可观察的。例如: getCampaigns(): ObservableCampaign[] { return this.http.get('/campaigns').map(res = res.json());} 假设服务器返回401.如何在全局范围内捕获此错
在我的Angular 2项目中,我从返回Observable的服务中进行API调用。调用代码然后订阅这个可观察的。例如:
getCampaigns(): Observable<Campaign[]> { return this.http.get('/campaigns').map(res => res.json()); } 假设服务器返回401.如何在全局范围内捕获此错误并重定向到登录页面/组件? 谢谢。 这里是我到目前为止: // boot.ts import {Http,XHRBackend,RequestOptions} from 'angular2/http'; import {CustomHttp} from './customhttp'; bootstrap(AppComponent,[HTTP_PROVIDERS,ROUTER_PROVIDERS,new Provider(Http,{ useFactory: (backend: XHRBackend,defaultOptions: RequestOptions) => new CustomHttp(backend,defaultOptions),deps: [XHRBackend,RequestOptions] }) ]); // customhttp.ts import {Http,ConnectionBackend,Request,RequestOptions,RequestOptionsArgs,Response} from 'angular2/http'; import {Observable} from 'rxjs/Observable'; @Injectable() export class CustomHttp extends Http { constructor(backend: ConnectionBackend,defaultOptions: RequestOptions) { super(backend,defaultOptions); } request(url: string | Request,options?: RequestOptionsArgs): Observable<Response> { console.log('request...'); return super.request(url,options); } get(url: string,options?: RequestOptionsArgs): Observable<Response> { console.log('get...'); return super.get(url,options); } } 我得到的错误信息是“backend.createConnection不是一个功能”
从每个请求方法获得的Observable类型为Observable< Response>。 Response对象具有状态属性,如果服务器返回该代码,则该属性将保留401 IF。所以你可能想要在映射或转换它之前检索它。
如果要避免在每次调用时执行此功能,您可能必须扩展Angular 2的Http类并注入自己的调用父(Super)的常规Http功能的实现,然后在返回对象之前处理401错误。 看到: https://angular.io/docs/ts/latest/api/http/index/Response-class.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容