2015-04-07 13 views
5

Właśnie zaczynam używać ACL Spring Security. Chcę uzyskać listę obiektów domeny, dla których użytkownik ma (jakiekolwiek) uprawnienia.Jak uzyskać listę obiektów domeny, do których użytkownik ma uprawnienia w listach ACL Spring Security?

Na przykład system ma 1000 "budynków", użytkownik może mieć dostęp do dowolnej liczby tych budynków. Kiedy użytkownik się loguje, chcę przedstawić mu listę budynków, do których mają uprawnienia.

Coś wzdłuż linii myAclService.getObjectsForUser ('[email protected]”, Building.class)

Zaczynam myśleć, że ACL nie działają w tym kierunku, ale musi być częstym wyzwaniem, więc musi istnieć przynajmniej wzorzec tego, jak to osiągnąć razem z ACL bez powielania danych.

Wszelkie przemyślenia mile widziane, dzięki!

+0

Wiosna Security 4 obsługuje params zapytań ze sprężyną Danych teraz. Sprawdź dokumenty. –

+0

Witam, badałem docos, ale nie jestem pewien, w jaki sposób parametry zapytań mają zastosowanie do mojego problemu z uzyskaniem listy obiektów domeny. Czy byłbyś w stanie wyjaśnić dalej? Dzięki –

+0

Hi @TomCrowder Czy rozwiązałeś ten problem? Próbuję znaleźć sposób na rozwiązanie tego samego problemu, ponieważ nie został on jeszcze zaimplementowany w pakiecie spring-security-acl. Byłoby wspaniale, gdybyś mógł podzielić się tym, co zrobiłeś. Dzięki – pVilaca

Odpowiedz

1

Uważam, że masz rację, że to, co zostało dostarczone w Spring Security re. ACL jest bardziej z perspektywy obiektu niż z perspektywy (główny) podmiot.

Można sprawdzić kod SQL wszystkich AclService s od wiosny Security, specjalnie JdbcAclService i JdbcMutableAclService.

0

Chcesz wykorzystać @PostFilter adnotacje

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

Czy tego nie szukasz? Mam kod, który zapytuje rzeczywistych tabel ACL. powyższe spowoduje filtrowanie dowolnego obiektu na liście, do którego bieżący użytkownik nie ma uprawnień. – denov

Powiązane problemy