page net mvc expired asp asp.net .net vb.net visual-studio-2010 session-timeout

asp.net - net - Redirigir a la página de inicio de sesión después del tiempo de espera de la sesión



redirect to login page on session timeout mvc (4)

Descripción

Puede usar el evento Page_Init en global.asax

Muestra

Protected Sub Page_Init(sender As Object, e As EventArgs) If Context.Session IsNot Nothing Then If Session.IsNewSession Then Dim newSessionIdCookie As HttpCookie = Request.Cookies("ASP.NET_SessionId") If newSessionIdCookie IsNot Nothing Then Dim newSessionIdCookieValue As String = newSessionIdCookie.Value If newSessionIdCookieValue <> String.Empty Then '' This means Session was timed Out and New Session was started Response.Redirect("Login.aspx") End If End If End If End If End Sub

Más información

He encontrado algunas preguntas similares pero ninguna me dio lo que realmente necesito.

Aquí está la cosa, he agregado esto a mi web.config para manejar la caducidad de la sesión del usuario:

<sessionState mode="InProc" timeout="1" />

Después de 1 minuto, se Session_End evento Session_End de Global.asax :

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs) Response.Redirect("Login.aspx") End Sub

Esto no funciona, porque:

Response is not available in this context.

(Por cierto, esta pregunta recibió una respuesta diciendo que esto está bien y obtuvo votos ascendentes).

No quiero nada lujoso. Solo quiero una manera simple de redirigir al usuario a la página de inicio de sesión cuando expire el tiempo de la sesión. Eso es todo.

Gracias.


Session_End es un evento del lado del servidor , lo que significa que se desencadena en el servidor web y no tiene nada que ver con una solicitud del cliente. Esta es la razón por la cual la Solicitud no está disponible.

Usted tiene dos opciones en este asunto:

  1. En cada solicitud de cliente, verifique si se ha establecido una variable de sesión específica. Si no es así, significa que la sesión anterior ha expirado y la nueva sesión debe completarse. (Supongo que esta es la razón por la que desea verificar la caducidad de la sesión)

  2. Tenga una llamada de javascript en el cliente que vuelva periódicamente al servidor para verificar si la sesión todavía es válida. Si la sesión ha expirado, puede advertir al usuario que su sesión está a punto de caducar.

HTH


Verifique las sesiones expiradas en cada evento Page_Init. Si hay demasiadas páginas para hacer esta verificación, esto es lo que suelo hacer:

  • Creo una clase base y heredo de System.Web.UI.Page.
  • Escribe mi lógica de redirección en el evento Page_Init de mi clase base.
  • Haga que el resto de mis páginas hereden de esta clase base.

Buena suerte.


protected void Page_Init(object sender, EventArgs e) { if (Context.Session != null) { if (Session.IsNewSession) { HttpCookie newSessionIdCookie = Request.Cookies["ASP.NET_SessionId"]; if (newSessionIdCookie != null) { string newSessionIdCookieValue = newSessionIdCookie.Value; if (newSessionIdCookieValue != string.Empty) { // This means Session was timed Out and New Session was started Response.Redirect("Login.aspx"); } } } } }