加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读