MVC 4模型字段自定义授权

时间:2013-12-26 02:54:30

标签: asp.net-mvc-4

我们正在创建一个MVC 4应用程序,要求用户有权根据他/她的角色成员资格查看和/或与某些模型字段进行交互。

例如,如果模型具有字段SSN,则只有在他/她是admin角色的成员时才允许用户查看此字段。一旦显示,用户应该只能在profile_admin角色的成员时修改它。换句话说,如果用户不是admin角色的成员,则不应呈现SSN字段,如果用户不是profile_admin角色的成员,则应禁用SSN字段。具有权限的角色应由网站管理员通过管理UI控制。

一种可能的解决方案是将SSN字段包装在局部视图中,然后在我们的自定义视图引擎中处理渲染。但是,此方法将要求我们要控制的每个字段都处于部分视图中,如果用户想要控制另一个字段(例如HireDate),则需要更改代码

我们希望我们可以通过在元数据类中使用自定义属性来实现这一点,如下所示:

[CustomFieldAuthorizeAttribute]
public string SSN { get; set; }

我们会保留数据库中每个字段的授权信息,如下所示:

FieldName       RoleId      AllowView      AllowEdit
SSN             1           True           False   

当属性执行时,它将检查当前登录用户的角色成员身份,并将确定查看和编辑此字段的权限,然后它将注入相应的html属性,如class =“hidden”或disabled =“disabled ”

这样,如果用户想要为另一个字段添加授权,我们需要做的就是在数据库中为该字段创建一条记录。自定义属性将从那里获取它。

是否可以实现此类功能

谢谢。

1 个答案:

答案 0 :(得分:0)

对于那些面临这种情况的人,我使用了this article中描述的概念来创建必要的功能。通过一些调整,解决方案完全符合要求。

感谢。