处理路线链接可见性

Handling Route Links Visiblity

你好,我有一个名为 Customer 的路由,用于创建新的 Customers.I 路由 link 放置在不同的 components.I 路由配置中有一个 gaurd,不允许未经授权的用户创建 customers.But 我想将路由 link 隐藏到未授权 users.I 不想检查用户是否已授权然后在每个 [=16] 中隐藏 link =] 有人建议我从单个组件隐藏路由 links 的最佳方法?

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

我为处理您描述的情况所做的工作是使用可以检查身份验证的服务。我会创建一个 AuthenticationService 来处理与身份验证和授权相关的所有事情。然后在该服务上创建一个 public 函数来检查 authenticatin/authorization returns 一个布尔值。

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

constructor(private authSvc: AuthService){}

并在模板中使用它来 show/hide 任何东西:

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

显然,使用 CanActivate 守卫仍然是防止用户访问他们不应该访问的路由的最佳保护。

希望对您有所帮助。