如何用角度2拦截http状态码401?

时间:2017-10-10 05:51:17

标签: spring angular login http-status-code-401 intercept

如何使用spring拦截角度2应用程序中的“401授权”,然后将用户重定向到登录页面?

例如,如果我没有连接,我会尝试访问某个页面。拦截器必须迫使我连接。我希望这个拦截器能够监听服务器返回的所有401状态。

1 个答案:

答案 0 :(得分:0)

如果您不想使用任何外部包,您只需创建自己的休息http服务。

您需要做的就是创建一个扩展Http的服务类。

示例:

export class RestHttp extends Http {

constructor(backend: ConnectionBackend) {
  super(backened, new RequestOptions (...))
}

get(url: string) {
  return this.catchError(super.get(url));
}

(delete, post, put) (...)

private catchError(res: Observable<Response>) {
  return res.catch((err) => {
    if (err.status >= 400) {
       *your logic*
    }
    return Observable.throw(err);
  });
}

现在你必须在模块中提供它。像这样:

<强> app.module

(...)
providers: [
  {provide: Http, useFactory: httpFactory, deps: [...]
(...)

export function httpFactory(backend: XHRBackend) {
   return new RestHttp(...)
}