C# ASP.NET身份动态角色授权

C# ASP.NET身份动态角色授权,c#,asp.net,asp.net-mvc,asp.net-identity,asp.net-identity-2,C#,Asp.net,Asp.net Mvc,Asp.net Identity,Asp.net Identity 2,由于我是ASP.NET Identity的新手,我正在观看MVA上的一个视频,Jeremy Foster在演示时问了一个问题,即如何使以下内容变得动态: [Authorize("Administrators, Users")] public ActionResult SomeAction() { //Access to only admins and users } 作为回答,亚当·图利伯说,可以用索赔的方式来实现,但我在互联网上找不到任何具体的东西,或者我可能不理解。但如果有人能告诉我怎

由于我是ASP.NET Identity的新手,我正在观看MVA上的一个视频,Jeremy Foster在演示时问了一个问题,即如何使以下内容变得动态:

[Authorize("Administrators, Users")]
public ActionResult SomeAction()
{
  //Access to only admins and users
}
作为回答,亚当·图利伯说,可以用索赔的方式来实现,但我在互联网上找不到任何具体的东西,或者我可能不理解。但如果有人能告诉我怎么做我会很感激的

这一点很重要,因为稍后,我可能希望允许另一个角色访问
SomeAction
,如果每次都需要重新编译和部署应用程序,那就不好了。此外,我可能会将控制权授予用户,以更改其他类型用户的访问权限


在过去,我通过覆盖
Authorize
属性来实现这一点,在该属性中,我从cookie中提取用户的RoleId,并从数据库中检查用户是否有权访问所请求的操作。但不确定如何使用索赔来完成。

这样的事情怎么样: 您可以将其与数据库一起使用,或者只需在web.config中维护授权角色的列表

 [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
    public class MyCustomAuthorizationAttribute : AuthorizeAttribute
    {
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            // Do some logic here to pull authorised roles from backing store (AppSettings, MSSQL, MySQL, MongoDB etc)
            ...
            // Check that the user belongs to one or more of these roles 
            bool isUserAuthorized = ....;

            if(isUserAuthorized) 
                return true;

            return base.AuthorizeCore(httpContext);
        }
    }

这就是我说的我以前做过的。但这似乎不是像身份识别这样基于索赔的系统的发展方向。