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

Gra*_*ler 1 asp.net security authorization asp.net-mvc-3

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

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

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

小智 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助,

标记