Ya que no acababa de proporcionar los detalles exactos de su pregunta, se supone que tiene una situación donde:
- está suministrando un UserDetailsService para cargar un DetallesUsuario cuando un usuario intenta iniciar sesión
- Como parte de ese servicio, está consultando una base de datos/DAO para cargar detalles sobre los permisos de un usuario, y está configurando las autorizaciones otorgadas basadas en este
- que cuando dice "Cuando actualizo los permisos" está haciendo referencia a la actualización de los permisos del usuario en la base de datos (o en lo que esté almacenando datos).
Si es así, entonces lo que está viendo es por diseño: Spring Security solo carga los UserDetails para el usuario la primera vez, cuando intentan iniciar sesión, y luego los almacena en Session a partir de ese momento. En general, esto tiene sentido, ya que evita que la aplicación tenga que realizar las mismas consultas sobre los detalles del usuario en cada solicitud. Además, los permisos de un usuario generalmente no cambian en el 99.9% de sus visitas.
Para cambiar este comportamiento, le recomendamos que agregue un comando/página de "actualización" en algún lugar que activará algún código (que tendrá que escribir) que volverá a consultar UserDetailsService y reemplazará UserDetails en SecurityContext . No creo que haya una forma incorporada de hacer esto.
Una posible solución se describe en [Ajuste de la sesión segura en tiempo real] (http://spring.io/blog/2009/01/03/spring-security-customization-part-2-adjusting-secured-session- en tiempo real) publicar en el blog de Spring Source. – Karimchik
Me tomó un tiempo, pero creo que esto finalmente se resolvió: http://stackoverflow.com/q/23072235/42962 – hooknc