Code: Select all
{
"access_token": "_ramSlQYasdsRTWEWew.....................",
"token_type": "bearer",
"expires_in": 17999,
"permissions": {
"user": [
"Add",
"Update",
"Delete"
],
"Product": [
"Read",
"Create"
]
}
}
Von hier aus muss ich jede Anfrage von meinem Ressourcenserver validieren, indem ich überprüfe, ob der Benutzer über ausreichende Berechtigungen verfügt, um die API mithilfe des Autorisierungsattributs aufzurufen.
Ich habe hier ein ähnliches Beispiel gefunden, in dem es um Dot Net Core geht, was für meinen Fall nicht geeignet ist.
Der schwierige Teil besteht darin, dass der Berechtigungs- JSON-Schlüssel selbst einen Komplex mit ArrayList bildet
Code: Select all
[CustomAuthorize(PermissionItem.Product, PermissionAction.Read)]
public async Task Index()
{
return View(Index);
}
public class CustomAuthorize : AuthorizeAttribute {
public AuthorizeAttribute (PermissionItem item, PermissionAction action) {
//Need to initalize the Permission Enums
}
public override void OnAuthorization (HttpActionContext actionContext) {
//Code to get the value from Permissions ArrayList and compare it with the Enum values
}
}
Wenn die Berechtigung für den Benutzer sowohl „Hinzufügen“ als auch „Aktualisieren“ lautet, bedeutet das dann, dass ich vor meinem Controller zwei Attributbedingungen erstellen muss?
Wie:
Code: Select all
[CustomAuthorize(PermissionItem.User, PermissionAction.Add)]
[CustomAuthorize(PermissionItem.User, PermissionAction.Update)]
Code: Select all
[CustomAuthorize(PermissionItem.User, PermissionAction.Update|PermissionAction.Add)]
Mobile version