Dieser Anwendungsfall kann die Standardrolle basierte Zugriffskontrolle (RBAC) Funktionalität durchgeführt werden unter Verwendung, da die Benutzerberechtigungen in Abhängigkeit von bestimmten Daten dem Benutzer zugeordnet ist dynamisch zur Laufzeit ändern. Diese
ist eigentlich der Anwendungsfall für die Access Control Lists (ACLs), wo für entworfen.
Spring Security hat die Unterstützung für ACLs durch die Feder-acl Glas hinzugefügt wird.Dies ist ein Zitat aus dem Federsicherheitshandbuch Acl Abschnitt:
Komplexe Anwendungen wird oft die Notwendigkeit finden, um Zugriffsberechtigungen zu definieren nicht einfach auf einer Web-Anforderung oder Methodenaufruf Ebene. Stattdessen müssen Sicherheitsentscheidungen sowohl who (Authentifizierung), wo (MethodInvocation) und was (SomeDomainObject) umfassen. Mit anderen Worten, Autorisierung Entscheidungen müssen auch den tatsächlichen Domänenobjektinstanz Betreff eines Methodenaufrufs berücksichtigen.
Siehe spring security manual Abschnitt 16.1 für die Details, wie Spring Security ACLs arbeiten. Dies ist eine tutorial zur Verwendung von Spring Security ACLs.
Aber Spring ACLs implizieren 4 zusätzliche Datenbanktabellen usw. Wenn es sich also um einen einzigen Fall in Ihrer Anwendung handelt, ist es wahrscheinlich besser, einen benutzerdefinierten Entscheidungsmanager mit einigen harcodierten Regeln zu erstellen.
Aber wenn dieser Anwendungsfall in Ihrer Anwendung häufig ist, sollten Sie erwägen, zu ACLs anstelle von RBAC zu wechseln, hoffe, dies hilft.
Können Sie bitte erläutern, wie Sie die "Kategorien" verwenden? –
Eine Kategorie ist eine Entität, die eine Sammlung von Artikelentitäten enthält. Es wird ausgewählt, wenn ein Benutzer durch die App navigiert. – Stefan