我的angular(4)应用程序中有数十个组件。
使用只能访问具有访问权限的人。
某些组件使用参数检查授权。
有许多类型的Access授权或拒绝策略。
所以我想象一下每个组件的委托CanActivate方法,因为每个组件都是根据它的目的检查访问权限的最佳位置。
我知道人们通常会在下面的服务中实现CanActivate。
@Injectable()
export class AccessGuard implements CanActivate {
canActivate(route: ActivatedRouteSnapshot,
state: RouterStateSnapshot) {
route.component.canActivate(route, state); // <----- HERE
return true;
}
}
现在我可以在第6行调用一些方法吗? 我想将CanActivate实现到我的所有组件,并让他们在该方法中拥有自己的防护登录。所以我很容易将保护逻辑放在组件的业务逻辑上。
答案 0 :(得分:-1)
添加适当的方法
@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();
}}}
我希望它会有所帮助