Недавно я застрял с охранниками маршрута 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'
}
];
Есть ли какое-нибудь решение для этого? Или Вы считаете это «не проблемой» в отношении безопасности?
Спасибо вам всем.