Da ich am Asp.Net core Authorization
Teil arbeite, brauchte ich eine neue Eigenschaft in AuthorizeAttribute
, die ich als einen zusätzlichen Berechtigungswert verwenden möchte. Also, ich habe die AuthorizeAttribute
in meinem eigenen benutzerdefinierten Autorize-Attribut erweitert. Siehe unten:Asp.Net Core: Zugriff auf benutzerdefinierte AuthorizeAttribute-Eigenschaft in AuthorizeHandler
public class RoleAuthorizeAttribute : Microsoft.AspNetCore.Authorization.AuthorizeAttribute
{
public string Permission { get; private set; }
public RoleAuthorizeAttribute(string policy, string permission) : base(policy)
{
this.Permission = permission;
}
}
Dann habe ich eine AuthorizationHandler
erstellt, wie unten für die Anforderung zu überprüfen:
public class RolePermissionAccessRequirement : AuthorizationHandler<RolePermissionDb>
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, RolePermissionDb requirement)
{
// check here..
context.Succeed(requirement);
return Task.FromResult(0);
}
}
Alle entsprechenden Service-Erfassungs Mapping ich bereits getan haben, nur hier weggelassen.
Jetzt mag ich meine Attribute wie diese auf Controller-Aktion Ebene verwenden:
[RoleAuthorize("DefaultPolicy", "CustomPermission")]
public IActionResult List()
{
}
Würde mir jemand vorschlagen, wie würde ich die Erlaubnis Eigenschaftswert auf der Oberseite der Aktionsmethode in der Prozedur gegeben zugreifen RolePermissionAccessRequirement ??
Ich möchte eine Art von Zugriffsregel basierend auf benutzerdefinierten Erlaubnis Wert in der Authorize attribute
oben auf Aktion Methode durchführen.
Vielen Dank im Voraus!
@IIya danke für deine tollen Antworten –