Pregunta

Mantengo una variable de sesión cuando el usuario inicia sesión. De modo que cuando el usuario haga clic en btnLogout, debe borrar todas mis sesiones y cerrar la sesión del usuario por BUENO.

Borra mis sesiones, pero si hago clic en el botón ATRÁS en IE justo después de cerrar sesión, ¡todavía estoy conectado! Lo que significa que vuelve a la pantalla donde el usuario todavía estaba conectado.

Mi código al cerrar sesión

protected void btnLogout_Click
{
   Session.Clear();
   Session.Abandon();
   Session.RemoveAll();

   Response.Redirect("Home.aspx");
}

¿Por qué es esto y cómo puedo evitarlo?

EDITAR: ¿Quizás haya una opción en el código que pueda hacer que inhabilite al usuario al presionar el botón ATRÁS en el Navegador web?

¿Fue útil?

Solución

Puede poner esto en la página_Init de su maestro:

Response.Cache.SetNoServerCaching();
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Cache.SetExpires(new DateTime(1900, 01, 01, 00, 00, 00, 00));

Esto es, por ejemplo, lo que hacen la mayoría de los sitios web de los bancos, por lo que no puede usar el botón de retroceso.

Otros consejos

¿Es esto realmente un problema? Sí, podrían ver su página anterior, ya que se ha almacenado en caché, pero tan pronto como intenten hacer otras solicitudes legítimas dentro de este contexto, estas fallarán a medida que desaparezcan las variables de sesión.

A menos que tenga una razón muy específica para codificar esto, estaría resolviendo un problema que realmente no existe.

Hay varias maneras en que puede decirle al navegador que no almacene la página en caché, ya sea desde código subyacente, javascript o mediante HTML, utilizando lo siguiente en la página

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">

También habría sido una buena práctica agregar en su evento page_load en el código detrás de un código para asegurarse de que la variable de sesión todavía exista.

El navegador mantiene una memoria caché de la página, por lo que simplemente presionar de nuevo no hará una solicitud al servidor para ver si todavía está conectado. Tendría que usar HTTPS para asegurarse de que la memoria caché también esté protegida.

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