Aurelia子路由器不通过主路由器管道

Aurelia子路由器不通过主路由器管道,aurelia,Aurelia,如果用户未登录,我的应用程序的主路由器管道将重定向到登录页面 它对大多数页面都可以正常工作,但当所述页面本身拥有一个子路由器时,逻辑似乎不会击中主路由器的管道,从而阻止重定向(以及不呈现页面) 主路由器: configureRouter (rc: RouterConfiguration, router: Router) { this.router = router; rc.addAuthorizeStep(this.requireAuth); const auth =

如果用户未登录,我的应用程序的主路由器管道将重定向到登录页面

它对大多数页面都可以正常工作,但当所述页面本身拥有一个子路由器时,逻辑似乎不会击中主路由器的管道,从而阻止重定向(以及不呈现页面)

主路由器:

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
,则不会发生任何事情:空白页,无重定向。我在
requireAuth
中间件代码中放入了
调试器
,在第一种情况下,调试器会介入,在第二种情况下,调试器不会执行

最后确定了问题,由于某些原因,它看起来像
加载路径测试步骤
管道步骤(在
AppRouter
内部)试图加载子计算机目标的ViewModel

由于此ViewModel在构造函数中有一些代码,因此该代码失败,导致错误并停止管道-从未到达重定向


修复方法是将该构造函数代码移动到ViewModel的
activate
函数中。

我认为这与您正在为凭证列表使用空路由这一事实有关。你能查一下吗?