Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC中基于角色的UI控件访问_C#_Asp.net Mvc_Razor_Role Based Access Control - Fatal编程技术网

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帮助程序,在其中我将接受角色作为参数,并检查角色,并相应地向控件添加禁用或启用类。 应用程序将有数百个页面,但某些页面可能对不同的角色具有不同的访问权限。请提供一个解决方案,我可以实现这一特定的页面和角色访

例如,我正在构建一个应用程序,其中具有不同角色的多个用户可以访问同一页面

  • 管理员可以更新所有字段
  • 启动器可以在页面的所有控件(注释框除外)中插入数据
  • 审阅者只能在评论框中插入数据
  • 指南只能读取屏幕上的数据,无法更新屏幕上的任何内容
到目前为止,我想到的唯一一件事是,我应该制作自定义Html帮助程序,在其中我将接受角色作为参数,并检查角色,并相应地向控件添加禁用或启用类。 应用程序将有数百个页面,但某些页面可能对不同的角色具有不同的访问权限。请提供一个解决方案,我可以实现这一特定的页面和角色访问控制,而不会对性能造成太大的影响


任何帮助或建议都将不胜感激。谢谢。

是否确实要隐藏用户无权更新的控件? 或者在点击“保存/更新”按钮时显示未经授权的错误(
返回新的HttpUnauthorizedResult();
)。如果您更喜欢后者,以下是一种方法:

  • 您的razor视图不会使用任何授权代码
  • 创建一个组/角色,如“所有授权的X应用程序”
  • 为单个功能创建组/角色,如“X管理员”、“X发起人”、“X审阅者”和“X指南”
  • 将第三个项目符号中的所有组/角色添加到第二个项目符号中
  • 装饰您的控制器,如
    [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控件“我所描述的设计将允许您这样做。