【发布时间】:2017-06-08 10:03:54
【问题描述】:
在处理Asp.Net core Authorization 部分时,我需要AuthorizeAttribute 中的一个新属性,我想将其用作额外的权限值。因此,我在自己的自定义 Authorize 属性中扩展了 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 方法顶部给出的权限属性值?
我想根据 Action 方法顶部的Authorize attribute 中给出的自定义权限值执行某种访问规则。
提前致谢!
【问题讨论】:
标签: c# asp.net-mvc authentication asp.net-core authorization