Pregunta

Cuando el usuario hace clic en un enlace de cierre de sesión, es fácil eliminar el mapa de Sessionscope de la base de datos actual:

var iterator=sessionScope.keySet().iterator();
while (iterator.hasNext()) {
  sessionScope.remove(iterator.next());
}

Pero esto solo borra las variables de Sessionscope para el NSF actual, no para todos los NSF en el servidor.Entonces, si luego inicien sesión como un usuario diferente y navegan a otros NSF que se accedan anteriormente durante esa sesión de navegador, la sesión del navegador todavía recoge las variables de Sessionscoped para el usuario que ha iniciado sesión anteriormente.

Si la aplicación abarca múltiples NSFS, ¿cómo borra la sesión del navegador de todos los NSF en el servidor?

actualización

Después de las discusiones, obtuve una retención de la sesión de facesescontext.getExternalcontext (). GetRequest (). GetSession (Falso) y luego se llamó el método Invalidate ().Eso no funcionó, todavía tiene el mismo ID de sesión y las variables de alcance se conservan.Creo que la idea de la galleta de Declan es la causa.Creo que es utilizado por el cliente de Notes también.

¿Fue útil?

Solución

Hay una cookie de sesión llamada 'SessionId' en el lado del navegador.

¿Qué sucede si invalidora / borra esa cookie durante el proceso de cierre de sesión?

Otros consejos

No sé cómo eliminar el área de sessions de otra base de datos, pero podría considerar un enfoque diferente: almacenar el nombre del usuario que inicializó el área de sessions en el área de sessions y compare eso con el nombre del usuario que intenta inicializareso.Si los nombres son diferentes, borran el área de sessions y inicializándolo nuevamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top