Дочерний маршрутизатор Aurelia не проходит через главный маршрутизатор - PullRequest
1 голос
/ 09 апреля 2019

Основной маршрутизатор моего приложения перенаправляет на страницу входа, если пользователь не вошел в систему.

Он отлично работает для большинства страниц, но когда указанная страница содержит дочерний маршрутизатор, логика, по-видимому, не попадает в конвейер основного маршрутизатора, предотвращая перенаправление (а также не отображая страницу).

основной маршрутизатор:

configureRouter (rc: RouterConfiguration, router: Router) {
    this.router = router;

    rc.addAuthorizeStep(this.requireAuth);

    const auth = { authenticated: true, needsCurrentOrg: true };

    const loginRoute = {
      route: 'login/:token?',
      name: 'login',
      moduleId: PLATFORM.moduleName('views/login/login'),
    };

    rc.map([
      {
        route: [ROOT_PAGE, DASHBOARD_PAGE],
        name: DASHBOARD_PAGE,
        moduleId: PLATFORM.moduleName('views/dashboard/dashboard'),
        settings: auth
      },
      {
        route: CREDENTIALS_PAGE,
        name: CREDENTIALS_PAGE,
        moduleId: PLATFORM.moduleName('views/credentials/credentials-root'),
        settings: auth
      })]
}

маршрутизатор учетных данных:

configureRouter (rc: RouterConfiguration) {
    rc.map([
      {
        route: '',
        name: 'credentials-list',
        moduleId: PLATFORM.moduleName('./credentials-grid'),
      }
    ]);
  }

Так что, если я нажму /#/dashboard без входа в систему, я перенаправлюсь на /login, но ничего не произойдет, если я нажму /#/credentials: пустая страница, перенаправление отсутствует. Я вставил debugger в код промежуточного программного обеспечения requireAuth, и в первом случае он вступает, во втором случае он не проходит через

1 Ответ

1 голос
/ 09 апреля 2019

Наконец-то определили проблему, по некоторым причинам это похоже на то, что шаг конвейера LoadRouteStep (внутренний по отношению к AppRouter) пытался загрузить ViewModel цели суб-маршрутизатора.

Так как этот ViewModel имел некоторый код в конструкторе, этот код завершался сбоем, создавал ошибку и останавливал конвейер - никогда не достигая перенаправления.

Исправление состояло в том, чтобы переместить этот код конструктора вactivate функция для ViewModel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...