¿Cómo puedo manejar el evento de cierre de un navegador para desencadenar un cierre de sesión?Cómo llamamos al servlet de cierre de sesión en el navegador cierre el evento
Respuesta
He buscado una solución consistente a este problema hace algún tiempo, y mi decisión fue manejar la situación sin creer en el navegador o el usuario.
No puede estar seguro de si un usuario está dejando su página y cuándo, e incluso si usa 'onunload', es posible que no obtenga el evento antes de que el navegador se cierre o salga de la página. Y los bloqueos del navegador no le darán ningún tipo de señal, por lo que creer que usted sabe que el usuario aún está viendo su página y que puede tomar otras medidas es defectuoso.
Lo mejor que puede hacer para cerrar la sesión de un usuario es poner un tiempo de espera de sesión adecuado, y si necesita más control, puede intentar agregar llamadas AJAX en páginas críticas con señales de 'Estoy vivo' y luego cerrar la sesión usuarios que ya no responden (que requerirían un navegador compatible con AJAX/JS y pueden excluir usuarios potenciales).
Usted está buscando el onunload:
window.onunload = function() {
// check the window is closed (see point 1 below)
// do log out
}
Hay 2 problemas con esto:
- Se llama cuando el usuario se desplaza fuera de la página, refresca, o generalmente se descarga así como cuando la ventana del navegador está cerrada.
- No parece haber un comportamiento constante entre los navegadores.
Recomiendo utilizar un enfoque diferente.
Tienes que ir con el tiempo de espera de la sesión. Como ha etiquetado su pregunta JSP, creo que es una aplicación web java de la que está hablando.
Generalmente tiene un oyente de tiempo de espera de sesión y tiene el código de "cierre de sesión" en el oyente.
En general, no confíe en los eventos del lado del cliente: un bloqueo del navegador/sistema, el cierre sin cerrar el navegador, etc. no activará los eventos.
pls se puede especificar en detalle o puede enviarme un ejemplo – DJJ
- 1. ¿Cómo detectar el cierre del navegador?
- 2. Obtener el evento de cierre de sesión del sistema
- 3. ShowDialog en el evento de cierre
- 4. La mejor manera de detectar el cierre/navegación del navegador a otra página y cerrar sesión
- 5. ¿Cómo manejo el inicio/cierre de sesión en Caliburn.Micro?
- 6. Detectar el cierre de sesión de Windows en Python
- 7. Cómo escuchar el evento de cierre de IIS en ASP.NET
- 8. autenticación de ASP.NET inicio de sesión y cierre de sesión con el botón Atrás del navegador
- 9. ¿Cómo prevenir el cierre de la ventana del navegador?
- 10. ¿Cómo lograr el cierre de sesión automático en php?
- 11. Interceptar el evento de cierre de Windows Vista en C#
- 12. Cierre de Google - Html5History activa el evento NAVIGATE dos veces
- 13. "e.Cancelar" en cierre de formulario Evento
- 14. Obtener el evento de cierre de la aplicación
- 15. ¿Simula el cierre/reapertura del navegador en pepino/capibara?
- 16. Diseñe el cierre de sesión independiente para dos modelos diferentes
- 17. Google Chrome mantiene las variables de sesión después de que el navegador cierre
- 18. Django problema de cierre de sesión
- 19. Operador de cierre de sesión de Symfony
- 20. Cómo capturar el navegador cerrar evento?
- 21. Perdida de sesión al cerrar el navegador
- 22. Symfony2 tema de cierre de sesión
- 23. ¿Cuándo usar el cierre?
- 24. ¿Cómo puedo administrar la sesión en el inicio/cierre de sesión de Android?
- 25. El cierre no funciona
- 26. Identificación entre acciones de navegador de actualización y cierre
- 27. C# - Cómo detectar un cierre/cierre de sesión de Windows y cancelar esa acción (después de preguntar al usuario)
- 28. cierre de sesión y redirigir sesión en php
- 29. Cierre de sesión automático una vez que la sesión caduque
- 30. Evento de cierre desencadenado en UserClosing y this.close
+1 - no confíe en los navegadores. – Nivas
estoy de acuerdo con su solución, pero quiero agregar este manejo para cerrar sesión automáticamente cuando el usuario cierre el navegador antes de cerrar la sesión. en mi aplicación si el usuario cierra directamente el navegador sin cerrar la sesión, entonces el usuario no puede iniciar sesión antes de los 20 minutos. – DJJ
Tenga en cuenta que no importa lo que ocurra, no importa cuán inteligente, NUNCA se asegure una señal de desconexión, como expliqué anteriormente. Puede enviar un comando de cierre de sesión usando 'onunload', pero tendrá que manejarlo correctamente para no agotar mucho a un usuario que está navegando a otra página de su sistema, además de que no funcionará todo el tiempo. Mi honesta opinión es que no vale la pena el esfuerzo. Solo vive con las sesiones perdidas asesinadas por el tiempo de espera. – mdrg