我的 angular(4) 应用程序中有数十个组件。
只有有访问权限的用户才能访问。
一些组件通过参数检查授权。
有多种类型的访问授权或拒绝策略。
所以我想象一下将 CanActivate 方法委托(delegate)给每个组件怎么样,因为每个组件都是根据其目的检查访问权限的最佳位置。
我知道通常人们会像下面这样在服务中实现 CanActivate。
@Injectable()
export class AccessGuard implements CanActivate {
canActivate(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot) {
route.component.canActivate(route, state); // <----- HERE
return true;
}
}
现在我可以在第 6 行调用一些方法吗? 我想对我的所有组件实现 CanActivate 并让它们在该方法中拥有自己的保护登录。所以我很容易将守卫逻辑放在组件的业务逻辑附近。
最佳答案
添加适当的方法
@Injectable()
export class AccessGuard implements CanActivate { canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
constructor(private sessionService:SessionService) {}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
return this.sessionService:SessionService.isAuthenticated();
}}}
希望对你有帮助
https://stackoverflow.com/questions/48115561/
相关文章:
google-chrome-extension - 将 Google Chrome 扩展程序限制为选
rest - Django REST 框架 RequestsClient 内容类型
bazel - 从 bazelrc 选择特定于平台的默认值 --config
amazon-web-services - AWS API 网关响应正文模板映射(foreach)
spring - @Transactional(read-only = true) 的目的是什么
python - 如何将 Spyder 设置为默认程序/应用程序以打开 (.py) Python 文
javascript - 如何从提供 NET::ERR_CERT_AUTHORITY_INVALID
python-3.x - 在 XGBoost 中应用增量学习进行分类设置时出错(python)