2014-10-24 18 views
13

Ich versuche Apis durch Spring Data REST ausgesetzt zu ermöglichen. Bisher bin ich in der Lage rollenbasierte Autorisierung das heißt zu tun:Verwendung von Spring Security ACL mit Spring Data REST

@RepositoryRestResource(path = "book") 
public interface BookRepository extends JpaRepository<Book, Long> { 

    @PreAuthorize("hasRole('ROLE_ADMIN')") 
    <S extends Book> Book save(Book book); 
} 

auch im selben Projekt habe ich eine Dienstschicht mit ACL-Mechanismus, der arbeitet.

Ich bin nicht in der Lage NACHFILTER Ausdruck mit Spring Data REST verwenden heißt:

@PostFilter("hasPermission(filterObject, 'read') or hasPermission(filterObject, admin)") 
List<Book> findAll(); 

Es ist von großer Hilfe sein würde, wenn jemand ACL mit Spring Data REST verwenden.

Anmerkung: Ich bin mir bewusst, unten offene Fragen:

https://jira.spring.io/browse/DATAREST-236

https://jira.spring.io/browse/SEC-2409

Antwort

34

mit JpaRepository wurde Shadowing Liste <Buch> findAll (Methode). Dann habe ich CrudRepository verwendet und PostFilter wurde angewendet.

Weitere Details ein Beispielprojekt ist auf GitHub verfügbar: https://github.com/charybr/spring-data-rest-acl

ACL-basierte Zulassung für unter Entität von Spring Data REST ausgesetzt arbeitet.

+5

Sie Sir verdienen eine Aufwertung (sogar eineinhalb Jahre später) für die Zeit zu kommen und die Antwort auf Ihr eigenes Problem zu posten. Vielen Dank ! –

+0

Wie filtern Sie die Ergebnisse mit '@ PostAuthorize' innerhalb einer 'findAll()' Funktion basierend auf individuellen Entity-Werten innerhalb des auslagerbaren Arrays? –

+0

@ W.M. pageable '@ PostAuthorize' ist keine gute Idee. Weitere Informationen finden Sie unter https://docs.spring.io/spring-security/site/docs/4.0.x/reference/htmlsingle/#data-query –

Verwandte Themen