Попробуйте пользовательский атрибут, подобный этому:
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);
}
}
Просто поместите этот атрибут в любой метод действия, требующий авторизации, и найдите в базе данных имя контроллера и имя действия, чтобы получить необходимые роли.
Надеюсь, это поможет,
Mark