Nella nostra applicazione abbiamo previsto di utilizzare il meccanismo RoleVoter
ma vorremmo rimuovere il prefisso ROLE_
come la sicurezza che stiamo attuando è più compito basato di ruolo basato.Perché il RoleVoter di Spring Security ha bisogno di un prefisso?
Tecnicamente, non c'è alcun problema per l'implementazione ma ho trovato nella documentazione che using the RoleVoter
with an empty prefix should be discouraged.
Mi chiedo perché?
AFAICS, l'unico problema è che, senza il prefisso, il RoleVoter
sarà partecipare alle decisioni che non è destinato a (come ad esempio il IS_AUTHENTICATED_FULLY
, IS_AUTHENTICATED_REMEMBERED
, ...) e la forza restituisce un accesso negato invece di un abstain .
Potrebbe confermare che questo è l'unico problema con un prefisso vuoto?
Grazie in anticipo M.
Ciao Luke, ho appena aggiornato Spring Boot dalla 1.2.2 alla 1.3.2 e questo ha iniziato a frenare per me. I miei controller hanno @PreAuthorize ("hasRole ('Edit')") e ora sta iniziando a controllare il prefisso ROLE_. Sembra che la tua spiegazione di hasRole() sia cambiata da quando hai postato questa risposta perché sta passando attraverso RoleVoter. Ho provato a trovare i modi per impostare il prefisso "" vuoto ma nessuno di loro funziona ... Puoi consigliare un altro modo per farlo in Spring Boot 1.3.2? – szxnyc
L'ho cambiato in haauthority e ha funzionato. – szxnyc