Asp.net mvc 有什么可以帮助处理的吗;“字段级”;ASP.NET MVC3的授权?

Asp.net mvc 有什么可以帮助处理的吗;“字段级”;ASP.NET MVC3的授权?,asp.net-mvc,Asp.net Mvc,我知道您可以使用Authorize属性来控制对控制器或ActionMethod的访问。。。但是更细粒度的控制呢?例如,根据用户的角色允许/不允许特定字段似乎很常见。也许在员工档案中,员工可以编辑其档案信息,但只有主管可以更改其职务 最理想的情况是,我希望能够正常地开发视图、模型和控制器,并且在网站上有一个配置页面,站点管理员可以使用该页面以所需的任何粒度配置授权。换句话说,程序员不应该担心它(除了编写/集成系统特定部分的人) 我可以想象DisplayFor和EditorFor检查属性以将字段呈现

我知道您可以使用Authorize属性来控制对控制器或ActionMethod的访问。。。但是更细粒度的控制呢?例如,根据用户的角色允许/不允许特定字段似乎很常见。也许在员工档案中,员工可以编辑其档案信息,但只有主管可以更改其职务

最理想的情况是,我希望能够正常地开发视图、模型和控制器,并且在网站上有一个配置页面,站点管理员可以使用该页面以所需的任何粒度配置授权。换句话说,程序员不应该担心它(除了编写/集成系统特定部分的人)

我可以想象DisplayFor和EditorFor检查属性以将字段呈现为只读、隐藏等。。。也许属性是在运行时从某种授权提供程序添加的


问题是:是否有一个框架或其他东西已经做到了这一点?

您可以使用HtmlHelper在字段级别实现安全性。在以下示例中,他们仅使用textbox实现,但可以轻松地对所有类型的控件进行扩展:


编写一个定制的ModelMetaDataProvider,它允许您在将每个模型的元数据及其属性添加到视图中之前修改它们。如果字段的元数据值ShowForEdit=false或ShowForDisplay=false,则内置帮助程序不会呈现该字段


您可以利用规则引擎或某些其他ACL来操作每个模型和属性上的元数据,以便在不接触内置帮助程序的情况下获得所需的大部分行为。在需要更多控制的边缘情况下,您可以编写自己的帮助程序,并在metadata.AdditionalValues字典中传递更复杂的数据

没有真正回答我的问题。。。我知道我可以写助手,自定义显示和编辑等等。。。但是A)我希望有一个更优雅的解决方案,B)我希望其他人已经这样做了!我不认为有人做过,但我正在寻找为它写一个插件,如果你可以等待2周,然后你可以使用它:)如果有人已经做了,那么它将是伟大的,如果你可以让我知道太多。