在asp.net mvc 4中基于列的角色安全性

时间:2015-05-26 06:21:06

标签: asp.net-mvc asp.net-mvc-4

我有asp.net MVC 4应用程序,我想根据角色显示列。例如。以下是我的模特课。

public class Employee
{
   public int Id {get;set;}
   public string FirstName {get;set;}
   public string LastName {get;set;}
   public string Designation {get;set;}
}

在我看来,我只想在用户担任管理员角色时才显示指定栏。

我可以通过检查用户是否在角色中轻松地在视图上执行此操作。但那是我不想做的。我想在列基础上建立安全性。因此,如果我的用户没有管理员权限,则指定为空字符串。

ASP.NET MVC 4可以实现吗?任何帮助将不胜感激!。

2 个答案:

答案 0 :(得分:0)

我不知道在MVC 4中有这样做的方法,除了你说的,在视图中做检查。

您可以考虑根据用户角色呈现完全不同的视图。

当然,这可能会导致其他问题,如重复代码等,但这是一个选项。

答案 1 :(得分:0)

我们的一个项目有类似的要求,在报告表中我们必须根据客户类型隐藏某些列。

由于我们的报告是使用ajax调用加载的,因此简单的show / hide没有意义。因为即使数据隐藏在html中,或者说你只删除或不在html上渲染那些列,仍然会在json响应中存在值。

相反,这就是你能做的。

根据用户类型,您可以拥有类,这些类将具有您希望向用户显示的属性。

例如,您可以从基类开始

public class EmployeeBase
{
   public int Id {get;set;}
   public string FirstName {get;set;}
   public string LastName {get;set;}
}

然后是更具体的。

public class EmployeeAdmin : EmployeeBase
{
   public string Designation {get;set;}
}

我的班级名称可能不合适,但你明白了。