如果服务器返回401响应,则重定向到登录页面

时间:2016-07-27 11:11:30

标签: aurelia aurelia-router aurelia-fetch-client

如果是401响应,我如何拦截服务器端点响应并将aurelia应用程序重定向到登录页面?

我试过" withInterceptor(responseError(){...})" aurelia-fetch-client config的方法,但我不能返回"新的重定向(loginPage)" ...

任何人都知道该怎么做?

2 个答案:

答案 0 :(得分:5)

以下是一个例子:

import { HttpClient } from 'aurelia-fetch-client';
import { inject } from 'aurelia-framework'
import { Router } from 'aurelia-router'

@inject(HttpClient, Router)
export class UserService {
  http
  router

  constructor(http, router) {
    this.http = http
    this.router = router

    this.http.configure(config => {
      var self = this;
      config
      .withInterceptor({
        responseError(response) {
          if (response.status === 401) {
            self.router.navigateToRoute('login')
          }
          return response; // you can return a modified Response
        },
      });
    });
  }

答案 1 :(得分:0)

@Moustachiste使用此方法解决了相同的问题:

注入必须是这样

constructor(
// private _router: Router
@lazy(Router) private _router: () => Router
)