Ir al contenido

Guardar información del usuario en la sesión con ASP

Una sesión permite conservar información entre las distintas peticiones que un usuario realiza a una aplicación. En ASP clásico, el objeto Session almacena esos datos en el servidor y los asocia normalmente con el navegador mediante una cookie de sesión.

Debemos evitar guardar contraseñas, datos financieros u otra información sensible dentro de Session. También conviene almacenar solo lo necesario, ya que cada sesión consume recursos del servidor.

Podemos asignar un valor utilizando una clave entre paréntesis. En este ejemplo guardamos el nombre del usuario en Session("usuario").

Session("usuario") = "Víctor Cuervo"

El valor permanecerá disponible mientras la sesión siga activa o hasta que se elimine de forma explícita.

Para recuperar el dato utilizamos la misma clave. Podemos mostrarlo en la respuesta mediante Response.Write().

Dim usuario
usuario = Session("usuario")
Response.Write("Usuario: " & Server.HTMLEncode(usuario))

El operador & concatena cadenas en VBScript. Además, Server.HTMLEncode() evita que un valor dinámico se interprete como código HTML al insertarlo en la página.

También podemos utilizar una variable de sesión para mantener un contador. Antes de incrementarlo, comprobamos si está vacío mediante IsEmpty().

If IsEmpty(Session("paginas")) Then
Session("paginas") = 0
End If
Session("paginas") = Session("paginas") + 1
Response.Write("Páginas vistas: " & CStr(Session("paginas")))

La función CStr() convierte el contador en una cadena antes de incorporarlo a la respuesta.

La propiedad Session.Timeout define cuántos minutos de inactividad pueden transcurrir antes de que la sesión caduque. El siguiente código establece un tiempo de espera de 10 minutos.

Session.Timeout = 10

Este valor debe elegirse considerando tanto la experiencia del usuario como el consumo de recursos y los requisitos de seguridad de la aplicación.

Cuando el usuario cierre sesión, podemos eliminar sus datos mediante Session.Abandon.

Session.Abandon

La sesión se abandona al finalizar la petición actual. Para un cierre de sesión completo, la aplicación también debe invalidar cualquier mecanismo adicional de autenticación que utilice.

El siguiente ejemplo guarda el nombre del usuario, incrementa el contador de páginas vistas y muestra ambos valores.

<%
If IsEmpty(Session("usuario")) Then
Session("usuario") = "Víctor Cuervo"
End If
If IsEmpty(Session("paginas")) Then
Session("paginas") = 0
End If
Session("paginas") = Session("paginas") + 1
Session.Timeout = 10
Response.Write("Usuario: " & Server.HTMLEncode(Session("usuario")) & "<br>")
Response.Write("Páginas vistas: " & CStr(Session("paginas")))
%>

Así podemos mantener información sencilla durante la navegación del usuario, controlar su duración con Session.Timeout y eliminarla cuando deje de ser necesaria mediante Session.Abandon.

Foto de Víctor Cuervo

Víctor Cuervo

Programador, Arquitecto IT, álter ego de Línea de Código, amante de las tecnologías, generador de conocimiento y facilitador del aprendizaje.

Descarga el código de Guardar información del usuario en la sesión con ASP

Descubre cómo guardar información del usuario en la sesión con ASP de forma segura y eficiente, aumenta la interacción y controla su tiempo de vida.

Descargar código