java - j_spring_security_check - spring security tutorial
¿Cómo se cierra la sesión de todos los usuarios registrados en Spring-Security? (2)
Ketan le da la respuesta que está buscando, si cambia el segundo para bloquear y usa session.expireNow();
en su lugar activeSessions.add(session);
Usted terminará con todas las sesiones activas expiradas.
Quiero poder cerrar la sesión de todos los usuarios conectados de forma programática. ¿Cómo forzar el cierre de sesión de todos los usuarios en algún evento?
Primero defina HttpSessionEventPublisher en web.xml
<listener>
<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener>
Luego defina <session-management>
en su archivo spring security.xml.
Ahora, use SessionRegistry
en su método de controlador para invalidar todas las sesiones. A continuación el código recupera todas las sesiones activas.
List<SessionInformation> activeSessions = new ArrayList<SessionInformation>();
for (Object principal : sessionRegistry.getAllPrincipals()) {
for (SessionInformation session : sessionRegistry.getAllSessions(principal, false)) {
activeSessions.add(session);
}
}
En cada sesión activa, puede llamar al método expireNow()
para que caduque o invalide.