因为我正在处理Asp.Net core授权
部分,所以我需要在AuthorizeAttribute
中添加一个新的属性,以便将其用作额外的权限值。因此,我通过自定义的方法扩展了AuthorizeAttribute
。如下所示:
public class RoleAuthorizeAttribute : Microsoft.AspNetCore.Authorization.AuthorizeAttribute
{
public string Permission { get; private set; }
public RoleAuthorizeAttribute(string policy, string permission) : base(policy)
{
this.Permission = permission;
}
}
然后,我创建了一个AuthorizationHandler
来检查如下的要求:
public class RolePermissionAccessRequirement : AuthorizationHandler<RolePermissionDb>
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, RolePermissionDb requirement)
{
// check here..
context.Succeed(requirement);
return Task.FromResult(0);
}
}
我已经完成了所有相关服务集合映射,这里只是省略了。
现在,我希望我的属性可以在控制器操作级别上使用:
[RoleAuthorize("DefaultPolicy", "CustomPermission")]
public IActionResult List()
{
}
请问有人能建议我如何访问处理程序RolePermissionAccessRequirement中顶部给出的权限属性值吗?
我想基于在Action方法上方的Authorize attribute
中给出的自定义权限值执行某种访问规则。
提前感谢!