在 ASP.NET 5 中动态添加角色以授权控制器的属性
Dynamically add roles to authorize attribute for controller in ASP.NET 5
我有一个示例问题 post 但是 ASP.NET 5 (vNext)
在ASP.NET 5中,我不能像上面post说的那样覆盖AuthorizeAttribute class。那么如何在 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
希望对您有所帮助。
我们甚至需要自定义授权处理程序吗?下面的代码不会做同样的事情吗?
var roles = new[] { "Admin", "Admin2", "Admin3" }; //Get From DB.
options.AddPolicy("CustomRole", policy =>
{
policy.RequireRole(roles);
});
我有一个示例问题 post
提前致谢。
正如迈克所说,您需要政策。这是一种实现方式。
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
希望对您有所帮助。
我们甚至需要自定义授权处理程序吗?下面的代码不会做同样的事情吗?
var roles = new[] { "Admin", "Admin2", "Admin3" }; //Get From DB.
options.AddPolicy("CustomRole", policy =>
{
policy.RequireRole(roles);
});