【问题标题】:MVC 4 model field custom authorizationMVC 4 模型字段自定义授权
【发布时间】:2013-12-27 04:25:57
【问题描述】:

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

例如,如果模型有一个字段 SSN,则只有当他/她是管理员角色的成员时,才应允许用户查看此字段。一旦显示,用户应该只能在 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 ”。

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

有没有可能实现这样的功能

谢谢。

【问题讨论】:

    标签: asp.net-mvc-4


    【解决方案1】:

    对于那些面临这种情况的人,我使用this article 中描述的概念来创建必要的功能。稍作调整,该解决方案就完全按照要求工作了。

    谢谢。

    【讨论】:

      猜你喜欢
      • 2012-10-04
      • 2010-11-01
      • 2013-12-14
      • 2013-10-31
      • 2015-03-03
      • 1970-01-01
      • 1970-01-01
      • 2014-01-23
      相关资源
      最近更新 更多