ASP.NET - Fin de sesión al alcanzar el timeout

 
Vista:

Fin de sesión al alcanzar el timeout

Publicado por Javier (59 intervenciones) el 19/04/2007 22:35:44
Hola de nuevo amigos, investigando he logrado entender un poquillo como funcionan las sesiones, pero programando me ha surgido la siguiente duda, a ver si alguien la puede solucionar.

Public Class Sesion
Inherits System.Web.UI.Page

Public Overridable Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Response.AddHeader("Refresh",((Session.Timeout * 60) + 5).ToString)
If (Not (Session("SesionActiva")) Is Nothing) Then
Response.Redirect("Login.aspx")
End If
End Sub

End Class
******************************************************************************************

usuario sólo puede entar en esa página privada mientras su contraseña sea la contraseña por defecto.

2: He estado echando un vistazo a esta página para controlar si se ha alcanzado el timeout de la sesión:

http://www.elguille.info/colabora/NET2005/GRP_Redireccion_en_Session_End.htm

Y más o menos lo he acoplado en mi código. Lo que pasa es que tengo un pequeño problemilla con la condición de redirección al

login de la clase virtual. Si dejo la condición tal cual me redirige al login sin haberse alcanzado el timeout y si la cambio

y, en lugar de igual a null, la digo distinto de null me funciona cuando el timeout no se ha acabado, pero cuando se llega al

tiemout se vuelve a ejecutar el procedimiento de cargar página y no me manda a login, si no que me deja en la página que

estaba cuando debería mandarme al login porque el timeout se ha acabado.

De todas formas te dejo el código porque yo lo estoy haciendo en VB y a lo mejor al traducirlo he metido la patita.

Este es el código de mi clase virtual (que es una clase de VB dentro de la carpeta App_Code en un aplicación de ASP.NET, lo

cual no se si podrá hacer) que comprueba si el timeout se ha acabado:

******************************************************************************************
Public Class Sesion
Inherits System.Web.UI.Page

Public Overridable Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Response.AddHeader("Refresh",((Session.Timeout * 60) + 5).ToString)
If (Not (Session("SesionActiva")) Is Nothing) Then
Response.Redirect("Login.aspx")
End If
End Sub

End Class
******************************************************************************************

Y este es el código de la página donde ejecuto la llamada a la clase virtual para saber si el timeout se ha acabado antes de

cargar dicha página:

****************************************************************************************************
Public Overrides Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
MyBase.Page_Load(sender, e)
End Sub
****************************************************************************************************

Espero respuestas.
Muchas gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder