我正在尝试为我的插件路由实现保护。
我已经为其添加了概念,并且它确实起作用,但是我遇到了两个问题,它们如下:
routerLink
时。它似乎根本不叫保安,而是允许用户导航到该路线。/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
,不过我想尽可能避免这种情况。
答案 0 :(得分:0)
因此canActivate签名上的有角documentation包含RouterStateSnapshot作为该函数的第二个参数。您可以尝试包括这样的内容吗?
canActivate(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable<boolean>|Promise<boolean>|boolean
还要检查此路由卫士是否已在提供者下的app.module.ts中注册
答案 1 :(得分:0)
网址/plugins/team-members
是/plugin/team-members
吗?您的路线将路径指定为path: 'plugin'
,其中插件是单数。
您能否确认开发者工具中的“网络”标签未显示对团队成员的请求的404错误?