繁体   English   中英

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

[英]Aurelia child router does not go through main router pipeline

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

它适用于大多数页面,但是当所述页面将自己作为子路由器时,逻辑似乎不会命中主路由器的管道,从而阻止重定向(以及不呈现页面)。

主路由器:

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中间件代码中放置了一个debugger ,在第一种情况下它会介入,在第二种情况下它不会通过

最后确定了这个问题,由于某些原因,看起来LoadRouteStep管道步骤(在AppRouter内部)试图加载子路由器目标的 ViewModel。

由于此 ViewModel 在构造函数中有一些代码,该代码失败,创建错误并停止管道 - 永远不会到达重定向。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM