身份验证 – 动态添加角色以授权ASP.NET 5中的控制器属性

我在这篇文章中有一个示例问题Dynamically add roles to authorize attribute for controller但是对于ASP.NET 5(vNext)
在ASP.NET 5中,我无法覆盖AuthorizeAttribute类,如上所述.那么如何在ASP.NET 5中动态添加角色控制器(vNext)

提前致谢.

最佳答案
正如迈克所说,你需要政策.这是一个实现.

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);
    }
}

并在startup.cs中的ConfigureServices方法中

services.ConfigureAuthorization(options =>{
    options.AddPolicy("CustomRole", policy => policy.AddRequirements(new CustomRoleRequirement()));
});

你需要像这样在控制器中提供autorize属性.

[Authorize(Policy = "CustomRole")]

资料来源:https://forums.asp.net/post/5975557.aspx

希望能帮助到你.

转载注明原文:身份验证 – 动态添加角色以授权ASP.NET 5中的控制器属性 - 代码日志