重定向时找不到子路由,否则无效

时间:2016-11-11 02:48:12

标签: javascript routing aurelia

我遇到了子路由器/路由的问题。 (下面的缩写示例。)

app.ts

config.map([
    { route: "auth", name: "auth", moduleId: "auth" }
]);

AUTH / index.ts

config.map([
    { route: "", redirect: "login" },
    { route: "login", name: "login", moduleId: "./login", title: "Login" }
]);

认证step.ts

run(navigationInstruction, next) {
    if (navigationInstruction.getAllInstructions().some(i => i.config.auth)) {
        if (!this.authContext.isAuthenticated())
            return next.cancel(this.router.navigateToRoute('auth/login', { return: true }));
    }

    return next();
}

如果请求安全路线,我会AuthenticationStep重定向到auth/login。例如,如果我尝试转到安全路线(例如admin/something),我就会收到以下错误。但是,如果我直接导​​航到auth/login,则会正确显示登录页面。

  

无法找到名称为“auth / login”的路由。

1 个答案:

答案 0 :(得分:2)

添加一个空路由,并将重定向添加到子路由器的配置中:

{ route: '', redirect: 'login' }

然后,将您的来电更改为navigateToRoute,以导航至auth

run(navigationInstruction, next) {
    if (navigationInstruction.getAllInstructions().some(i => i.config.auth)) {
        if (!this.authContext.isAuthenticated())
            return next.cancel(this.router.navigateToRoute('auth', { return: true }));
    }

    return next();
}