Перенаправить на страницу входа, если сервер возвращает ответ 401

Как я могу перехватить ответ конечной точки сервера и перенаправить приложение aurelia на страницу входа в систему, если ответ 401?

Я попытался "withInterceptor(responseError() {...})" метод конфигурации aurelia-fetch-client, но я не могу вернуть "новый Redirect(loginPage)"...

У кого-нибудь есть идеи, как это сделать?

1 ответ

Решение

Вот пример:

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
        },
      });
    });
  }

@Moustachiste исправляет ту же проблему с этим подходом:

вводить должно быть так

constructor(
// private _router: Router
@lazy(Router) private _router: () => Router
)
Другие вопросы по тегам