2015-11-11 9 views
7

Voglio creare un multi-utente api, in cui gli utenti accedono a un servizio riposante e hanno il proprio spazio per dire una classe di prenotazione. Le prenotazioni non sono condivise tra gli utenti.API multi-utente restful con avvio a molla, jpa e sicurezza

Sto lottando per capire quale sia lo schema migliore per creare questo, sfruttando il più possibile la magia dello stivale primaverile.

Sto utilizzando Spring Boot JPA e definisco un utente e una classe di prenotazione con @Entity.

La mia prenotazione fa quindi riferimento a questa classe utente. Tuttavia, esiste un modo per utilizzare @RepositoryRestResource o un'annotazione simile per isolare automaticamente i modelli di dati per ciascun utente, quindi utilizzare Spring Security per proteggere l'endpoint CRUD o devo creare il mio @RestResponse che cerca gli utenti in base alla loro autorizzazione e quindi creare un metodo findByUser per eseguire l'isolamento?

(nota Sono nuovo di primavera, primavera Boot ecc)

Edit: è stato suggerito guardo ACL, ma sto lottando per trovare buone risorse SEMPLICI che spiegano come funzionano

+0

ho anche trovato un video tutorial che utilizza le annotazioni di limitare a utenti specifici (verso la fine del video) https://www.youtube.com/watch?v=_1EFB6fk2_8&list=PLTgRMOcmRb3Oenxtwc-F3kQL8B_7mWdgx&index=3&spfreload=1 –

risposta

5

Se hai davvero dati isolati per ogni utente e vuoi un meccanismo trasparente per poter selezionare o aggiornare solo i dati che ti è consentito vedere dovresti guardare il supporto multitenancy di T eclipselink.

http://wiki.eclipse.org/EclipseLink/Development/Indigo/Multi-Tenancy

Ecco una domanda con risposta accettata su come impostare questa funzione in primavera-dati-JPA Multi tenancy with spring data jpa and eclipselink

ibernazione Inoltre sembra avere il supporto per multi-tenancy http://docs.jboss.org/hibernate/orm/5.0/userGuide/en-US/html_single/#d5e3197

Ma tenere a mente le query sulle entità abilitate alla multitenancy vengono quindi sempre filtrate dall'ID tenant, quindi la separazione è piuttosto rigorosa.

+0

Fantastico - Grazie per quello. Sembra super interessante. Sembra essere di più per le situazioni in cui è necessaria una separazione completa. –

+1

Esattamente - lo userei solo se hai davvero bisogno della completa separazione dei dati - ma puoi attivarlo a livello di entità - quindi non devi abilitare la tenancy su tutte le tue entità –

Problemi correlati