Я пытаюсь установить защиту для моих маршрутов, которые предназначены для плагинов.
У меня есть концепция, и она, кажется, работает, однако у меня есть 2 проблемы, и они следующие:
- При нажатии на
routerLink
из приложения Angular. Похоже, он вообще не вызывает охранника и позволяет пользователю перейти к маршруту.
- Другая проблема заключается в том, что при переходе по маршруту через URL, например,
/plugins/team-members
, страница не будет перенаправлена.
Вот мой модуль маршрутизатора:
const routes = {
path: 'plugin',
canActivate: [
BIPluginGuard
],
children: [
{
path: 'team-members',
component: BIPluginTeamMembers
},
{
path: 'sponsors',
component: BIPluginSponsors
}
]
};
А вот и мой охранник:
canActivate(route: ActivatedRouteSnapshot): boolean {
const currentRoute: string = route.children[0].routeConfig.path;
const accessiblePlugin: any = this.plugins.find((plugin) => {
return plugin.path === currentRoute;
});
if (!accessiblePlugin || !accessiblePlugin.allowed) {
this.router.navigate['/dashboard'];
return false;
}
return true;
}
Это мой первый раз, когда я использую охрану, поэтому я не уверен, нужно ли мне ставить canActivate
на каждом маршруте, хотя я хочу избежать этого, если это возможно.