@ respuesta de Dimas no es lógicamente consistente con su pregunta; ifAllGranted
no se puede reemplazar directamente con hasAnyRole
.
Desde el Spring Security 3—>4 migration guide:
antigua:
<sec:authorize ifAllGranted="ROLE_ADMIN,ROLE_USER">
<p>Must have ROLE_ADMIN and ROLE_USER</p>
</sec:authorize>
Nueva (SPEL):
<sec:authorize access="hasRole('ROLE_ADMIN') and hasRole('ROLE_USER')">
<p>Must have ROLE_ADMIN and ROLE_USER</p>
</sec:authorize>
Sustitución ifAllGranted
directamente con hasAnyRole
hará que la primavera para evaluar el estado de uso de un OR
en lugar de un AND
. Es decir, hasAnyRole
volverá true
si el principal autenticado contiene al menos un de las funciones especificadas, mientras que la primavera del (ahora en desuso a partir de la primavera de Seguridad 4) Método ifAllGranted
única devuelto true
si el principal autenticado contenía todo de las funciones especificadas .
TL; DR: Para replicar el comportamiento de ifAllGranted
usando nuevo lenguaje de expresión de autenticación de la primavera de Seguridad Taglib, el patrón hasRole('ROLE_1') and hasRole('ROLE_2')
necesita ser utilizado.
Se trabajó :-) \t \t \t (Usuario/Admin) \t seg: Autorizar> Sin embargo, cualquier forma de comprobar hasAllRoles (role1, role2)? –
Acerca de su última pregunta: "¿Hay alguna manera de verificar hasAllRoles (role1, role2)?" - No creo que sea posible. Pero puedes crear tu expresión personalizada (di un enlace), y en el código comprueba lo que quieras. – dimas
En su segunda pregunta, debería poder usar 'hasRole' con el operador 'and' como hasRole ('ADMIN') y hasRole ('DEVELOPER') para lograr esta funcionalidad. – bh5k