En nuestra aplicación se planificó utilizar el mecanismo RoleVoter
pero nos gustaría para eliminar el prefijo ROLE_
como la seguridad que estamos implementando es más tarea basada de papel basado.¿Por qué RoleVoter de Spring Security necesita un prefijo?
Técnicamente, no hay ningún problema para la implementación pero encontré en la documentación que using the RoleVoter
with an empty prefix should be discouraged.
Me pregunto por qué?
AFAICS, el único problema es que, sin el prefijo, el RoleVoter
participarán en las decisiones que no tiene la intención de (como el IS_AUTHENTICATED_FULLY
, IS_AUTHENTICATED_REMEMBERED
, ...) y la fuerza devuelve un acceso denegado en lugar de un abstenerse .
¿Podría confirmar que este es el único problema con un prefijo vacío?
Gracias de antemano M.
Hola Luke, acabo de actualizar Spring Boot de 1.2.2 a 1.3.2 y esto comenzó a frenar para mí. Mis controladores tienen @PreAuthorize ("hasRole ('Edit')") y ahora está comenzando a buscar el prefijo ROLE_. Parece que tu explicación de hasRole() ha cambiado desde que publicaste esta respuesta porque está pasando por RoleVoter. Traté de encontrar maneras de configurar el prefijo para que se vacíe "" pero ninguno de ellos funciona ... ¿Puedes recomendar otra forma de hacerlo en Spring Boot 1.3.2? – szxnyc
Lo cambié a HaaAuthority y funcionó. – szxnyc