【发布时间】:2018-05-28 22:47:12
【问题描述】:
我正在构建一个应用程序,其中不同角色的多个用户可以访问同一页面,例如
- 管理员可以更新所有字段
- Initiator可以在页面的所有控件中插入数据,除了cmets框
- 审阅者只能在 cmets 框中插入数据
- 指南只能读取屏幕上的数据,无法更新屏幕上的任何内容
到目前为止,我唯一想到的是我应该制作自定义 Html 帮助程序,我将在其中接受角色作为参数并检查角色并相应地向控件添加禁用或启用类。 应用程序将有数百个页面,但某些页面可能对不同角色具有不同的访问权限。请提供一个解决方案,让我可以在不影响性能的情况下实现此特定页面和基于角色的访问控制。
任何帮助或建议将不胜感激。谢谢。
【问题讨论】:
-
你试过看看the docs吗?
-
(这可能与核心和 MVC 略有不同,但应该适用一般原则,添加自定义助手可以弥补差距)
-
@Clint 感谢您提供宝贵的意见,但如果我使用它,我需要为每个控件使用
@if ((await AuthorizationService.AuthorizeAsync(User, Model, Operations.Edit)).Succeeded),正如我所提到的,我需要在 100 多页中做这样的事情,我没有在每个控件上编写此代码的通用解决方案会更好。 -
鉴于您的权限不像每个控件那样细粒度,您肯定可以每页测试一次,并将结果作为模型的一部分吗?或者至少作为页面上声明的变量?这样你就可以对变量进行测试。无论如何都很麻烦,我知道,但我不相信有一种简单的方法可以将这些规则应用于所有控件。
-
我希望有人在他们的项目中做过类似的事情,并准备建议我实现这一目标。
标签: c# asp.net-mvc razor role-based-access-control