在我进行Asp.Net core Authorization部分工作时,我需要一个新属性AuthorizeAttribute,我想将其用作额外的权限值。因此,我AuthorizeAttribute在自己的自定义 Authorize 属性中扩展了。见下文:
public class RoleAuthorizeAttribute : Microsoft.AspNetCore.Authorization.AuthorizeAttribute
{
public string Permission { get; private set; }
public RoleAuthorizeAttribute(string policy, string permission) : base(policy)
{
this.Permission = permission;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我创建了一个AuthorizationHandler来检查要求,如下所示:
public class RolePermissionAccessRequirement : AuthorizationHandler<RolePermissionDb>
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, RolePermissionDb requirement)
{
// check here..
context.Succeed(requirement);
return Task.FromResult(0);
}
}
Run Code Online (Sandbox Code Playgroud)
所有相应的服务集合映射我已经做过了,这里就省略了。
现在,我希望我的属性在控制器操作级别上像这样使用:
[RoleAuthorize("DefaultPolicy", "CustomPermission")]
public IActionResult List()
{
}
Run Code Online (Sandbox Code Playgroud)
有人会建议我如何访问处理程序 RolePermissionAccessRequirement 中 Action 方法顶部给出的权限属性值吗?
我想根据 …