2016-02-22 12 views
5

In tutta la mia applicazione Web Spring REST, ho molti oggetti dominio e DTO.Campi di Jackson @JsonIgnore basati su ruoli di sicurezza primaverili

Devo filtrare alcuni campi oggetto domini o campi DTO in base ai ruoli di sicurezza primari dell'utente che effettua la richiesta. Voglio che Jackson filtri il JSON di output per consentire/disabilitare campi di classi specifici da serializzare, in base ai ruoli Spring GrantedAuthorities dell'utente che tenta di accedere alla risorsa.

Non riesco a creare un nuovo DTO per ogni combinazione di viste diverse perché sarebbe un disastro.

Ho trovato questa soluzione:
Spring 3.2: Filtering Jackson JSON output based on Spring Security role
Ma non funziona, il filtro viene applicato solo una volta, quando i primi accessi utente. Quindi tutti gli altri utenti ottengono lo stesso filtro, indipendentemente dal loro ruolo.

Non riesco a spiegare il mio problema meglio di Ray Olanda in questo post del blog:
http://jackson-users.ning.com/forum/topics/jackson-custom-serialization
Questo è lo stesso problema che sto cercando di risolvere per un paio di giorni.

Non sono riuscito a trovare un modo pulito per farlo fino ad ora.

+0

creare più mapper con viste diverse, configurato che aiuterà – Shashank

risposta

0

E 'meglio usare @JsonView nel progetto di primavera (example)

Se @JsonView non è sufficiente, non è facile soluzione. È inevitabile definire una classe specifica (interfaccia) per implementare @JsonIgnoreProperties e @JsonFilter ( dare un'occhiata a Jackson: Skip Objects Conditionally)

Problemi correlati