处理路线链接Visiblity

时间:2017-03-27 15:08:40

标签: angular angular2-routing

您好我有一条名为Customer的路线用于创建新客户。我有路由链接放置在不同的组件中。我在路由配置中有一个gaurd,它不允许未经授权的用户创建客户。但我想隐藏路由链接到未经授权的用户。我不想检查用户是否被授权然后隐藏每个组件中的链接。可以有人建议我隐藏单个组件的路由链接的最佳方法吗?

1 个答案:

答案 0 :(得分:2)

最终,每个组件都会控制其模板中显示的内容。例如,您的客户组件无法控制其路径的routerLink是否显示在任何其他组件中。

我为处理您所描述的情况所采取的措施是使用可以检查身份验证的服务。我将创建一个AuthenticationService来处理与身份验证和授权相关的所有事情。然后在该服务上创建一个公共函数来检查返回布尔值的authenticatin / authorization。

然后在您想要使用它的任何地方的构造函数中注入该服务:

constructor(private authSvc: AuthService){}

并在模板中使用它来显示/隐藏任何内容:

<a *ngIf="authSvc.IsAuthorized('somePermission')" [routerLink]="..."

显然,使用CanActivate防护仍然是防范用户访问他们无法访问的路线的最佳保护。

希望有所帮助。