Authentication 在ASP.NET 5中动态添加角色以授权控制器的属性

Authentication 在ASP.NET 5中动态添加角色以授权控制器的属性,authentication,authorization,asp.net-core,Authentication,Authorization,Asp.net Core,我有一个关于这篇文章的示例问题,但是关于ASP.NET5(vNext) 在ASP.NET5中,我不能像上面所说的那样覆盖属性类。那么,如何在ASP.NET 5(vNext)中动态添加角色和控制器呢 提前谢谢。正如mike提到的,你需要政策。这里是一个实现 public class CustomRoleRequirement : AuthorizationHandler<CustomRoleRequirement>, IAuthorizationRequirement { pr

我有一个关于这篇文章的示例问题,但是关于ASP.NET5(vNext) 在ASP.NET5中,我不能像上面所说的那样覆盖属性类。那么,如何在ASP.NET 5(vNext)中动态添加角色和控制器呢


提前谢谢。

正如mike提到的,你需要政策。这里是一个实现

public class CustomRoleRequirement : AuthorizationHandler<CustomRoleRequirement>, IAuthorizationRequirement
{
    protected override void Handle(Microsoft.AspNet.Authorization.AuthorizationContext context, CustomRoleRequirement requirement)
    {
        var roles = new[] { "Admin", "Admin2", "Admin3" };  //Get From DB.
        var userIsInRole = roles.Any(role => context.User.IsInRole(role));
        if (!userIsInRole)
        {
            context.Fail();
            return;
        }

        context.Succeed(requirement);
    }
}
您需要像这样在控制器中提供autorize属性

[Authorize(Policy = "CustomRole")]
资料来源:


希望有帮助。

我们甚至需要自定义授权处理程序吗?下面的代码不也是这样吗

var roles = new[] { "Admin", "Admin2", "Admin3" };  //Get From DB.
    options.AddPolicy("CustomRole", policy =>
                    {
                        policy.RequireRole(roles);            
                    });
在MVC6(vNext)中,您可以编写一个授权策略,该策略查看用户角色并执行其所需的任何操作,例如,将其与动态生成的列表进行比较。有关策略的示例,请参见。
var roles = new[] { "Admin", "Admin2", "Admin3" };  //Get From DB.
    options.AddPolicy("CustomRole", policy =>
                    {
                        policy.RequireRole(roles);            
                    });