C# ASP.NET MVC中基于角色的UI控件访问
例如,我正在构建一个应用程序,其中具有不同角色的多个用户可以访问同一页面C# ASP.NET MVC中基于角色的UI控件访问,c#,asp.net-mvc,razor,role-based-access-control,C#,Asp.net Mvc,Razor,Role Based Access Control,例如,我正在构建一个应用程序,其中具有不同角色的多个用户可以访问同一页面 管理员可以更新所有字段 启动器可以在页面的所有控件(注释框除外)中插入数据 审阅者只能在评论框中插入数据 指南只能读取屏幕上的数据,无法更新屏幕上的任何内容 到目前为止,我想到的唯一一件事是,我应该制作自定义Html帮助程序,在其中我将接受角色作为参数,并检查角色,并相应地向控件添加禁用或启用类。 应用程序将有数百个页面,但某些页面可能对不同的角色具有不同的访问权限。请提供一个解决方案,我可以实现这一特定的页面和角色访
- 管理员可以更新所有字段
- 启动器可以在页面的所有控件(注释框除外)中插入数据
- 审阅者只能在评论框中插入数据
- 指南只能读取屏幕上的数据,无法更新屏幕上的任何内容
任何帮助或建议都将不胜感激。谢谢。是否确实要隐藏用户无权更新的控件? 或者在点击“保存/更新”按钮时显示未经授权的错误(
返回新的HttpUnauthorizedResult();
)。如果您更喜欢后者,以下是一种方法:
[Authorize(“Roles=“All Authorized X app”)]
if(User.IsInRole(“X管理员”))
或if(User.IsInRole(“X审阅者”)
您试过看一下吗?(这可能与core和MVC略有不同,但一般原则应该适用,添加自定义帮助程序可以弥补这一差距)@Clint感谢您的宝贵意见,但如果我使用它,我需要使用
@if((wait AuthorizationService.authorizationAsync(User,Model,Operations.Edit))。成功)
对于每个控件,正如我提到的,我需要在100多个页面中完成这项工作,一个通用的解决方案(我不需要在每个控件上编写此代码)会更好。鉴于您的权限不像每个控件那样细粒度,您当然可以每页测试一次,并将结果作为模型的一部分?或者至少作为页面上声明的变量?这样你就可以对变量进行测试。尽管很麻烦,我知道,但我不相信有一种简单的方法可以将这些规则应用于所有控件。我希望有人可能在他们的项目中做过类似的事情,并准备好建议我实现这一点。我不想隐瞒事实trols,但我想限制用户更新这些控件上的任何内容,或者您可以说禁用这些字段。正如我在问题中提到的,在单个视图中,某些角色可以访问某些UI控件,而其他角色可以访问某些其他UI控件。”在单个视图中,一些角色将访问某些UI控件,而其他角色将访问某些其他UI控件“我所描述的设计将允许您这样做。