基于角色ASP.NET MVC4的页面权限

时间:2013-07-08 04:10:31

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

在允许系统访问某个特定页面之前,系统检查用户角色的机制的最佳实现方式是什么?也可以在页面中启用某些链接/操作,例如对于具有超级'的用户。角色,他们可能能够删除/编辑数据,而其他人只能看到它?

为了您的信息,我不使用ASP.NET MVC中的开箱即用的用户管理(用户是在嵌入到webapp的.mdf数据库中创建的),但是我已经开发了自己的用户模块(用于验证,注册和删除用户)。

那么......这个问题的最佳做法是什么?

1 个答案:

答案 0 :(得分:2)

您可以撰写自定义ValidationAttributehttp://msdn.microsoft.com/en-AU/library/system.componentmodel.dataannotations.validationattribute.aspx

基本上,您从ValidationAttribute继承,并覆盖IsValid()

public class IsAnAdminAttribute : ValidationAttribute {
    protected override bool IsValid(object obj) {
        if (Membership.UserInRole("admin"))
            return true; // they can access it
        else
            return false; // can't access it
    }
}

..然后将其应用于控制器操作:

[HttpGet]
[IsAnAdmin]
public ActionResult MyAction() {
    // only administrators can access this now
}