由於我在Asp.Net core Authorization
部分工作,我需要一個新屬性AuthorizeAttribute
,我想將其用作額外的權限值。所以,我已將AuthorizeAttribute
擴展到我自己的自定義「授權」屬性中。請看下圖:Asp.Net Core:訪問AuthorizeHandler中的自定義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
中給出的自定義許可值執行某種訪問規則。
在此先感謝!
@IIya謝謝你的真棒回答 –