在获取身份验证弹出窗口之前,在Angular中拦截http请求

时间:2017-05-03 13:54:32

标签: angular http angular-http-interceptors

当我收到401错误代码+基本身份验证时,我试图找到一种避免身份验证弹出窗口的方法。

不幸的是,我无法在服务器上进行更改,所以我在实现一个http拦截器 - 重定向到登录页面 - 然后才能获得弹出窗口。

我找到了博文的帮助,但无法使其发挥作用。如果登录错误或正确无关紧要,我最终进入页面:/ loginPage?login = loginITypedIn& password = pwdITypedIn

导出类HttpService {

constructor(private http: Http, private router: Router) { }

get(url: string, options?: RequestOptionsArgs): Observable<Response> {
    return this.intercept(this.http.get(url,options));
}

intercept(observable: Observable<Response>): Observable<Response> {
    return observable.catch((err, source) => {
        if(err.status == 401) {
            this.router.navigate(['/loginPage'], { queryParams: {} });
            return Observable.empty();
        } else {
           return Observable.throw(err);
        }
    });
}

}

在另一项服务中调用它:

return this.http.get(url, { headers: headers, withCredentials: true })
                .map((res:Response) => res.json());

我为我的英语道歉,但我完全陷入困境。

0 个答案:

没有答案