我最近被 Angular 路由守卫卡住了。CanActive 仅在页面加载时运行一次,并且不会在受保护路由内的路由更改时运行。我认为这已更改,因为它曾经在每次更改时运行。根据我在论坛上阅读的内容,我应该使用 CanActivateChild。问题是,我们的应用程序由几个模块组成,这些模块有几个路由后代,当我在根模块中使用 CanActivateChild 时,它会在更改路由时被多次调用。
我发现为每个孩子分配一个守卫是愚蠢的,因为对于 AppModule,那些延迟加载的子模块应该只是“黑盒”,我想定义所有这些模块都应该受到保护。
export const routes: Routes = [
{
path: '404',
component: NotFoundComponent
},
{
path: '',
canActivate: [AuthGuard],
component: FullLayoutComponent,
data: {
title: 'Home'
},
children: [
{
path: 'administration',
loadChildren: './administration/administration.module#AdministrationModule'
},
{
path: 'settings',
loadChildren: './settings/settings.module#SettingsModule'
}
]
},
{
path: '',
loadChildren: './account/account.module#AccountModule'
},
{
path: '**',
redirectTo: '404'
}
];
有什么解决办法吗?还是您认为这对于安全性“不是问题”?
谢谢你们。