2

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

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

我可以设想 DisplayFor 和 EditorFor 检查属性以将字段呈现为只读、隐藏等......并且可能在运行时从某种授权提供程序添加属性。

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

4

2 回答 2

1

编写一个自定义 ModelMetaDataProvider,它允许您在每个模型及其属性进入视图之前更改它们的元数据。如果字段的元数据值 ShowForEdit = false 或 ShowForDisplay = false,则内置帮助器将不会呈现字段。

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

于 2012-06-27T20:39:08.910 回答
0

您可以使用 HtmlHelper 在字段级别实现安全性。在下面的例子中,他们只使用了文本框实现,但它可以很容易地扩展到所有类型的控件:

http://bartreyserhove.blogspot.ca/2008/12/field-level-security-using-aspnet-mvc.html

于 2012-04-19T01:14:52.130 回答