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:
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)
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");
}
}
}
}
}