Redireccionar al expirar Session en ASP .NET

viernes, 28 de mayo de 2010

Cuando trabajamos con sesiones en ASP .NET en nuestra aplicación es muy importante saber cuando expira, el tiempo de expiración de las sesiones se pueden configurar en el archivo Web.config de tu solución:

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


como puedes ver en la propiedad timeout, se epecifica el tiempo en minutos. Una de las formas de avisarle al usuario quien utiliza la aplicación es mediante Javascript, ya que creo que es la mas indicada para ello, consiste en utilizar con contador de 20 minutos, que se restee a 0 cada vez que el usuario haga una petición al servidor (postback). Caso contrario si se pasan los 20 minutos enviarle un mensaje de alerta al usuario y re direccionándolo al formulario de login, que es precisamente lo que vamos a ver en este post.




'Registrar Script JS para avisar el fin de sesión
Dim tiempoExpiracion As String = Session.Timeout + 1
Dim scriptExpiraSesion As String = " var iMinute=" & tiempoExpiracion & "; function showTimer() {" & _
"lessMinutes();" & _
"}" & _
"function lessMinutes() {" & _
"iMinute-= 1;" & _
"if (iMinute==0) {" & _
"alert('Su sesión ha expirado,\nserá redireccionado a la página de acceso.');" & _
"window.location.href = '" & ResolveClientUrl("~/Default.aspx") & "'; }" & _
"window.setTimeout('lessMinutes();', 60000)}"



'Registrar Javascript en la página acutal
ScriptManager.RegisterStartupScript(Me.Page, Page.GetType(), "SessionExpira", scriptExpiraSesion, True)




y solo tienes que llamar a la funcion ShowTimer() colocando en el body:



<body onload="showTimer();">





Saludos, espero sus comentarios.