【发布时间】:2018-01-05 14:26:16
【问题描述】:
我的 angular(4) 应用程序中有数十个组件。
只有拥有访问权限的用户才能访问。
- 例如,UserA 可以访问 DashboardComponent,但 userB 不能。
部分组件通过参数检查授权。
- 例如 UserA 可以通过参数 1 访问 VisualizeComponent,但不能通过参数 2 访问。
有多种访问授权或拒绝策略。
所以我想如何将 CanActivate 方法委托给每个组件,因为每个组件都是根据其用途检查访问权限的最佳位置。
我知道人们通常会在下面的服务中实现 CanActivate。
@Injectable()
export class AccessGuard implements CanActivate {
canActivate(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot) {
route.component.canActivate(route, state); // <----- HERE
return true;
}
}
现在我可以在第 6 行调用一些方法吗? 我想为我的所有组件实现 CanActivate 并让它们在该方法中拥有自己的保护登录。我也可以轻松地将保护逻辑靠近组件的业务逻辑。
【问题讨论】: