我正在使用多个canActivateChild防护装置,如下所示:
{path: 'admin', canActivateChild : [AdminAuthGuard, EmployeeAuthGuard], children: adminRoutes }
以下是admin guard的定义:
canActivateChild() : boolean {
const role = localStorage.getItem('role');
if(role === 'admin') {
return true;
}
else {
return false;
}
}
我有非常相似的员工警卫,我在检查角色是员工。 上述代码的问题是:
注意:我的警卫是同步的我仍然面临这个问题。请告诉我如何解决?
实际代码比这复杂得多。这只是获取帮助的示例代码。
答案 0 :(得分:3)
创建一个组合守卫,关闭另外两个检查两个返回值的守卫:
class CombinedGuard {
constructor(private adminGuard: AdminAuthGuard, private employeeGuard: EmployeeAuthGuard) {}
canActivate(r, s) {
// defined your order logic here, this is a simple AND
return this.adminGuard.canActivate(r, s) && this.employeeGuard.canActivate(r,s)
}
}
然后在路由中使用CombinedGuard:
{path: 'admin', canActivateChild : [CombinedGuard], children: adminRoutes }