是否有任何软件包等为MVC3实现动态角色控制器访问?

时间:2011-12-14 16:54:20

标签: asp.net asp.net-mvc-3 authorization security

我已经静态地允许使用带有角色的标准Authorize属性来访问控制器/操作方法。我正在使用默认的ASP.Net成员资格提供程序。

我们的一位客户希望获得更精细的访问控制。他们希望能够动态分配哪些角色可以访问哪些控制器/操作等。我已经看到答案说实现CustomAuthorize属性。

只是想知道是否有任何工具包等。这似乎是一个合理的标准功能。我想像这样http://kbochevski.blogspot.com/2009/11/mvc-custom-authorization.html

1 个答案:

答案 0 :(得分:6)

尝试这样的自定义属性:

public class DynamicAuthorizeAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var controllerName = httpContext.Request.RequestContext.RouteData.Values["controller"];
        var actionName = httpContext.Request.RequestContext.RouteData.Values["action"];

        // Get this string (roles) from a database or somewhere dynamic using the controllerName and actionName
        Roles = "Role1,Role2,Role3"; // i.e.  GetRolesFromDatabase(controllerName, actionName);

        return base.AuthorizeCore(httpContext);
    }
}

只需将此属性放在需要授权的任何操作方法上,并使用控制器名称和操作名称在数据库中查找以获取所需的角色。

希望这有帮助,

标记