我有两个子路由器,一个用于管理员访问,一个用于公共访问 公共访问路由添加了AuthorizeStep,并检查用户是否已登录。
管理员访问权限使用不同的身份验证,以检查管理员用户是否经过身份验证我需要进行不同的检查。
我与'#34;父母"我的app.ts路线:
configureRouter(config, router) {
config.title = 'My site';
config.addPipelineStep('authorize', AuthorizeStep);
config.map([
{ route: '', redirect: 'Public' },
{ route: 'Public', moduleId: 'public/views/home', name:'public', title: 'Public Portal - Home' },
{ route: 'Admin', moduleId: 'admin/home', name:'admin', title: 'Admin - Home' }
]);
this.router = router;
}
}
公共子路由器看起来像:
configureRouter(config, router) {
config.map([
{ route: '', moduleId: './home', name: 'home', title: 'Home', auth: true },
{ route: 'login', moduleId: './login', name: 'login', title: 'Login' },
{ route: 'page2/:id', moduleId: './page2', name: 'page2', title: 'Page 2', auth: true }
]);
this.router = router;
}
对主页和第2页路由进行身份验证。
admin子路由器看起来像:
configureRouter(config, router) {
config.map([
{ route: 'page1', moduleId: './page1/home', name: 'page1', title: 'page 1', auth: true },
{ route: 'page2', moduleId: './page2/home', name: 'page2', title: 'page 2', auth: true }
]);
this.router = router;
}
只有经过身份验证的路线。 我希望能够做到这样的事情:
configureRouter(config, router) {
config.addPipelineStep('authorize', AdminAuthorizeStep);
config.map([
{ route: 'page1', moduleId: './page1/home', name: 'page1', title: 'page 1', auth: true },
{ route: 'page2', moduleId: './page2/home', name: 'page2', title: 'page 2', auth: true }
]);
this.router = router;
}
如果addPipelineStep出现在子路由器而不是父路由器上,但这不起作用,或者我还没有能够使这个工作,它甚至可能吗?或者我只能拥有一个AuthorizeStep并在其中处理逻辑以确定其管理员或公共用户是否访问该路由?
答案 0 :(得分:0)
对于子路由器来说,这似乎是不可能的。在aurelia-router.js:
if (pipelineSteps.length) {
if (!router.isRoot) {
throw new Error('Pipeline steps can only be added to the root router');
}
...
我确实在我的控制台中收到错误:
ERROR [app-router] Error: Pipeline steps can only be added to the root router