0

我有一个 UserProfile 模型,如下所示:

public class UserProfile
    {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int UserId { get; set; }

        public string UserName { get; set; }
        public string Position { get; set; }
        public string  Authority { get; set; }
        public string Service { get; set; }
        public string Area { get; set; }
        public int IsWrite { get; set; }

    }

表数据如下所示:


用户名 | 使用名 | 职位 | 权威 | 服务 | 面积 | 是写


1 | 彼得 | HSK 经理 | Svc-Ar | 汉语水平考试 | 西澳 | 0

2 | 多萝西 | 分公司经理| 氩| 全部 | 艺能 |1

3 |迈克 | HSK 主任 | 服务 | 汉语水平考试 | 全部 | 0

4 | 罗德尔 | HSK 数据录入 | 服务 | 汉语水平考试 | 全部 | 1

5 | 苏珊| WA 数据输入 |Ar | 全部 | 西澳 | 1

6 | 南希| 设施首席运营官 | 全部 | 全部 | 全部 | 0

7 | 艾伦 | 食品分公司经理 | Svc-Ar | 消防处 | 艺电 | 0


用户有多种权限范围;例如:一个对特定服务具有权限,另一个对特定区域具有权限,并且用户可能具有查看服务和区域记录的权限。我想为每个 List 控制器操作创建一个逻辑来检查 UserProfile 权限,然后考虑每个用户的权限范围列出数据。

这是另一个模型,其数据取决于称为项目的用户权限:

public class Projects
    {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int ProjectID { get; set; }

        public string Service { get; set; }
        public string Area { get; set; }

        [Required]
        [DisplayName("Project Name")]
        public string ProjectName { get; set; }

        [Required]
        [DataType(DataType.Currency)]
        [DisplayName("Contract Value")]
        public double ContractValue { get; set; }

        [Required]
        [DisplayName ("Contract Total MP")]
        public int ContractMP { get; set; }

        [Editable(false)]
        public int UserID { get; set; }

        [DataType(DataType.DateTime )]
        [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
        public DateTime EntryDateTime { get; set; }

    }

我想在项目控制器“索引”操作的开头放置一个逻辑来验证用户的权限;如果是“Svr”,则只显示他的服务数据,如果他的权限是“Ar”,它将只显示他的区域数据,如果他的权限是“Svr-Ar”,它将显示他的服务和区域数据只有,如果他的权限是“全部”,它将显示所有数据。

我尝试了很多方法来做到这一点,但我做不到,而且我是 MVC 的新手。请帮我。问候。

4

1 回答 1

0

可能你最好尝试使用角色。然后你可以简单地检查:

if(Roles.IsUserInRole("Ar"))
{
  //Show data for role Ar
}

但是你可以对你的权限字段做同样的事情。只需制作简单的方法:

public string GetUserAuthority(int UserID)
{
  var user = db.UserProfile.Find(id);
  return user.Authority;
}

或者如果您使用会员资格:

   public string GetUserAuthority()
    {
      var user = Membership.GetUser(User.Identity.Name);
      return user.Authority;
    }

然后检查控制器动作:

if(GetUserAuthority() == "Ar")
{
//Show data for role Ar
}
于 2013-10-03T09:45:22.377 回答