【问题标题】:How to automatically refresh when user logs out of the webapp?用户退出webapp时如何自动刷新?
【发布时间】:2021-09-19 20:36:36
【问题描述】:
我有一个网络应用程序,我可以在其中以管理员或客户身份登录。管理员可以访问所有页面,客户只能访问某些页面。
当客户登录时,会显示所需的页面,比如 3 个页面,在他注销并且管理员登录后,仍然只显示这 3 个页面。虽然,手动刷新后,我可以看到所有必需的管理页面。
如何在用户注销时自动刷新?我正在使用 Angular 10 框架。
【问题讨论】:
标签:
c#
angular
typescript
authentication
rbac
【解决方案1】:
由于您的问题非常笼统,因此很难进入细节。
您必须有一些登录代码,所以大概您正在从某个系统加载用户权限并将这些权限存储为应用程序的一部分——大概是作为 cookie?
您可以使用身份验证保护来保护路由。我们主要使用canActivate guards。
您可以使用*ngIf 隐藏页面上的元素(例如屏幕导航链接)。我们创建了自己的 structural directive 来接受允许的用户权限列表,以及当前用户的权限,并使用它来确定是否应该创建某些 dom 元素。
我不确定 C#,但在 Java 中,我们创建了一个 Spring Annotation 来在用户尝试访问 REST 端点时验证用户权限。我怀疑 .NET 世界中一定存在类似的东西。
从概念上讲,它与我们的 Angular 自定义结构指令没有太大区别;将执行操作的允许权限与用户权限进行比较,然后允许或拒绝该操作。
听起来您的用户通过重新加载应用程序获得了提升的权限;所以我怀疑你的完整实现存在一些潜在的安全问题,但没有代码审查就无法开始推测那是什么。