Sesiones, JSP

Estoy haciendo una aplicación de login-password y seguimiento de sesiones con JSP para los usuarios de un portal.
Mi problema es el siguiente.
Se trata de un portal con tres niveles de acceso: administrador, usuario privilegiado y usuario simple.
Resulta que cuando alguno accede al portal, le puede dar clic al botón back (atrás) del navegador y regresarse al formulario de inicio. Una vez que se haya regresado al formulario podría volver a llenar los campos de nombre de usuario y password con otros distintos, para lo cual el sistema debería indicarle que ya se inició sesión con un usuario y primero se debe de cerrar la sesión actual antes de loggearse con otro usuario distinto. Mi pregunta es cómo puedo controlar esto y si es posible detectar o capturar los eventos de cuando el usuario le da clic a los botones back o forward del navegador.
El problema es que debe funcionar algo así como lo hacen hotmail o yahoo en el inicio y cierre de sus sesiones, por ejemplo al cerrar la sesión al darle clic al botón back del navegador, hotmail o yahoo ya no te permiten regresar a la página anterior y te redireccionan a la página de que la sesión ha caducado. ¿En jsp puedo invalidar la sesión pero cómo se cuando el usuario le da back o forward en el navegador?
Respuesta
1
El parámetro "scope" que es utilizada en la declaración del javaBean en JSP permite señalar el tiempo de vida del mismo. Puede tener 3 valores, que serían:
Application
Page
Session
El primero (application), considera al bean como un objeto global y permite que exista unicamente uno en el tiempo de vida del JSP. Será eliminado cuando el JSP se descargue del servidor.
El valor page (es el que toma por defecto y el que supongo te coge a ti), se considera como una variable declarada dentro de tu página y solo existirá mientras la página esté activa.
El último valor (session) se lo toma en la sesión como almacenado, y existirá solo durante la existencia de dicha sesión (considerada como el tiempo en el que un navegador de internet se encuentra dentro de tu sitio) y cuando salga del sitio la sesión termina o puedes indicarle al servidor que la sesión caduque mediante algún programa o método personalizado.
La sintaxis sería:
<jsp:useBean id="tu_bean" class="tu_clase" scope="aqui_iria_el_valor_escogido_por_ti">
Supongo que los datos del usuario estarán almacenados en un bean (si no es así, es lo que te recomendaría hagas) para que puedas usar correctamente los parámetros mencionados. Creo que el valor que te convendría utilizar es application.
Si requieres más información sobre los parámetros (como funciona con un contador por ejemplo) puedes acceder a esta dirección:
http://www.etse.urv.es/EngInf/assig/sob/l3/guide.htm
Otros ejemplos para sesiones, usuarios y lo relacionado al tema (que te puede interesar y ayudar bastante también) lo encontrarás en:
http://www.tic.udc.es/~fbellas/teaching/is/
......pero específicamente en el archivo del Tema4 ubicado en:
http://www.tic.udc.es/~fbellas/teaching/is/Tema4Apartado4.2.pdf
... encontrarás ejemplos justo para lo que necesitas (si es que la información primera no sirve para tu aplicación)
Referente al botón atrás, creo que no se puede desactivar, pero si podrás hacer que no se acceda a dicha página si le colocas el siguiente script en el <body>:
<script>
if (history.forward(1)){
location.replace(history.forward(1))
}
</script>
Esto hace que cuando se retroceda a la página en donde esté incluido este script, automáticamente se vuelva a donde estaba antes de retroceder.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas