首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将CanActivate()委托给组件

将CanActivate()委托给组件
EN

Stack Overflow用户
提问于 2018-01-05 14:26:16
回答 1查看 1.4K关注 0票数 3

在我的角度(4)应用程序中有几十个组件。

使用只能访问具有访问权限的。

  • 例如,UserA可以访问DashboardComponent,但userB不能访问。

一些组件使用参数检查授权。

  • 例如,UserA可以使用参数1访问VisualizeComponent,但不能使用参数2访问。

有许多类型的访问授权或拒绝策略。

因此,我设想如何将CanActivate方法委托给每个组件,因为每个组件都是根据其用途检查访问的最佳位置。

我知道人们通常在服务中实现CanActivate,如下所示。

代码语言:javascript
复制
@Injectable()
export class AccessGuard implements CanActivate {
  canActivate(route: ActivatedRouteSnapshot, 
              state: RouterStateSnapshot) {

   route.component.canActivate(route, state); // <----- HERE

   return true;
  }
}

现在我可以在第6行调用某个方法了吗?我希望对我的所有组件实现CanActivate,并让它们在该方法中拥有自己的保护登录。因此,我很容易地将保护逻辑放在组件的业务逻辑附近。

EN

回答 1

Stack Overflow用户

发布于 2018-01-26 14:14:51

  1. 尝试添加一些必须存储有关负责访问的参数的信息的sessionService,添加有关给定访问逻辑的方法。
  2. 添加适当的方法 @Injectable()导出类AccessGuard实现CanActivate {canActivate(路由: ActivatedRouteSnapshot,state: RouterStateSnapshot) {构造函数(私有会话服务:SessionService) {} canActivate(路由: ActivatedRouteSnapshot,state: RouterStateSnapshot) {返回ActivatedRouteSnapshot}
代码语言:javascript
复制
1. For components and pages add router config for example {path: 'dashboard-page, component: DashboardComponent, canActivate: [AuthenticationGuard]},

我希望它能帮上忙

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48115561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档