【发布时间】:2023-01-11 20:05:01
【问题描述】:
使用 Angular 14,我的路由设置如下:
{ path: 'users', component: UsersComponent, canActivate: [AuthGuard], data: { role: 'user.read' } },
然后在 AuthGuard 中,如果经过身份验证的 jwt 不包含“user.read”范围,我将返回 false。这有效,如果用户没有范围,他们将被重定向到“/”。
现在我想从 UI 中删除“用户”页面按钮;我有路由器链接users,如何访问路由数据以检查页面是否可用;如果没有,则隐藏按钮。
我认为基本上我需要给定 url 的 ActivatedRouteSnapshot(传递给 CanActivate)——我看到的所有示例都需要 Router 订阅;但这只给了我当前的网址;不是我可能会去的那个。
SO 上的所有其他答案似乎基本上是在建议我在按钮上添加对“users.read”的检查;但我真的不想再添加它——它已经在路由中定义了。
似乎是一个简单的问题,但我正在努力寻找答案 - 谢谢!
【问题讨论】:
-
在您的 AuthGuard 中,您可以设置
sessionStorage变量,然后检查变量以隐藏/显示按钮。 -
我什么时候设置sessionStorage?据我目前所知,canActivate 仅在我单击要隐藏的按钮后才被调用?
标签: angular