2015-04-07 6 views
5

Ich fange gerade an, Spring Security ACL zu verwenden. Ich möchte eine Liste von Domänenobjekten abrufen, für die ein Benutzer Berechtigungen hat.Wie erhalte ich eine Liste der Domänenobjekte, für die ein Benutzer Berechtigungen für Spring Security ACLs hat?

Zum Beispiel hat das System Tausende von Gebäuden, ein Benutzer kann Zugang zu einer beliebigen Anzahl dieser Gebäude haben. Wenn sich der Benutzer anmeldet, möchte ich ihm eine Liste des Gebäudes vorlegen, für das er Berechtigungen hat.

Etwas nach dem Vorbild von myAclService.getObjectsForUser ('[email protected]‘, Building.class)

Ich bin beginnen zu glauben, dass ACLs funktionieren nicht in diese Richtung, aber es muss Da es sich um eine allgemeine Herausforderung handelt, muss es zumindest ein Muster dafür geben, wie dies neben der ACL erreicht werden kann, ohne Daten zu duplizieren.

Alle Gedanken willkommen, danke!

+0

Spring Security 4 Abfrage params mit Spring Data jetzt. Überprüfen Sie die Dokumente. –

+0

Hallo, ich habe die Docos untersucht, bin mir aber nicht sicher, wie die Abfrageparameter auf mein Problem angewendet werden, eine Liste von Domain-Objekten zu erhalten. Würdest du weiter erklären können? Danke –

+0

Hallo @TomCrowder Haben Sie dieses Problem gelöst? Ich versuche einen Weg zu finden, das gleiche Problem zu lösen, da es noch nicht im Frühjahr-Sicherheits-Acl implementiert ist. Es wäre großartig, wenn Sie teilen könnten, was Sie getan haben. Danke – pVilaca

Antwort

1

Ich glaube, Sie haben recht, was in Spring Security zur Verfügung gestellt wird. ACL ist mehr von der Objekt Perspektive als von der Thema (Prinzipal) Perspektive.

können Sie den SQL-Code überprüfen alle AclService s von Spring Security, speziell JdbcAclService und JdbcMutableAclService.

0

Sie die @PostFilter Annotationen verwenden möchten unterstützt

@PostFilter("hasPermission(filterObject, 'read') or hasPermission(filterObject, 'admin')") 
public List<Buildings> getAll(); 
+0

ist dies nicht, was Sie suchen? Ich habe etwas Code, der die tatsächlichen ACL-Tabellen abfragt. Obiges filtert alle Objekte in der Liste, auf die der aktuelle Benutzer keine Rechte hat. – denov

Verwandte Themen