@ risposta di Dimas non è logicamente coerente con la tua domanda; ifAllGranted
non può essere sostituito direttamente con hasAnyRole
.
Dal Spring Security 3—>4 migration guide:
Vecchio:
<sec:authorize ifAllGranted="ROLE_ADMIN,ROLE_USER">
<p>Must have ROLE_ADMIN and ROLE_USER</p>
</sec:authorize>
Nuovo (SPEL):
<sec:authorize access="hasRole('ROLE_ADMIN') and hasRole('ROLE_USER')">
<p>Must have ROLE_ADMIN and ROLE_USER</p>
</sec:authorize>
Sostituzione ifAllGranted
direttamente con hasAnyRole
causerà primavera per valutare la dichiarazione utilizzando un OR
invece di uno AND
. Cioè, hasAnyRole
restituirà true
se il principale autenticato contiene almeno uno dei ruoli specificati, considerando molla di (ora obsoleta come Sorgente Security 4) Metodo ifAllGranted
solo restituito true
se il principale autenticato conteneva tutti i ruoli specificati .
TL; DR: Per replicare il comportamento di ifAllGranted
utilizzando la nuova autenticazione Expression Language di Primavera di sicurezza Taglib, il modello hasRole('ROLE_1') and hasRole('ROLE_2')
deve essere utilizzato.
ha funzionato :-) \t \t \t (Utente/Amministratore) \t sec: autorizzare> Ma un modo per verificare la presenza di hasAllRoles (role1, role2)? –
Informazioni sull'ultima domanda: "Ma un modo per verificare hasAllRoles (role1, role2)?" - Non penso che sia possibile. Ma puoi creta la tua espressione personalizzata (ho dato un link), e nel codice controlla quello che vuoi. – dimas
Sulla seconda domanda dovresti essere in grado di utilizzare "hasRole" con l'operatore "e" come hasRole ("ADMIN") e hasRole ("DEVELOPER") per ottenere questa funzionalità. – bh5k