Sesiones

Las sesiones son una forma de almacenar información que es pertinente a un usuario o una sesión de navegador específica en una aplicación web. En ASP.NET Core, la sesión se utiliza para almacenar datos entre peticiones HTTP.

🧠 ¿Qué es una Sesión?

  • Almacenamiento Temporal: Las sesiones proporcionan una manera de persistir los datos a través de múltiples peticiones HTTP.

  • Por Usuario: Los datos de la sesión son únicos para cada usuario y son accesibles en todas las páginas durante la visita del usuario.

🛠️ Configuración de Sesiones

1️⃣Servicios de Sesión: Debes registrar los servicios de sesión en Program.cs de tu aplicación.

builder.Services.AddSession(options =>
{
    options.IdleTimeout = TimeSpan.FromMinutes(30); // Tiempo de vida de la sesión
    options.Cookie.HttpOnly = true; // La cookie solo es accesible por el servidor
    options.Cookie.IsEssential = true; // La cookie es esencial para el funcionamiento de la aplicación
});

2️⃣Middleware de Sesión: Debes agregar el middleware de sesión en la pipeline de procesamiento de solicitudes.

app.UseSession();

💾 Cómo Usar la Sesión

Establecer Datos de Sesión: Puedes establecer valores de sesión usando claves.

HttpContext.Session.SetString("SessionKeyName", "valor");
HttpContext.Session.SetInt32("SessionKeyNumber", 123);

Obtener Datos de Sesión

var myValue = HttpContext.Session.GetString("SessionKeyName");
var myNumber = HttpContext.Session.GetInt32("SessionKeyNumber");

📦 Tipos de Datos en la Sesión

  • Los datos de la sesión pueden ser tipos primitivos como string o int.

  • Para almacenar tipos complejos, necesitas serializarlos a string (como JSON) y luego deserializarlos cuando los recuperes.

📁 Almacenamiento de Sesiones

  • Por defecto, las sesiones se almacenan en memoria, pero puedes configurar otros almacenamientos como SQL Server o Redis para aplicaciones de alto rendimiento o distribuidas.

⚙️ Consideraciones de Configuración

  • Cookies: Las sesiones dependen de una cookie para rastrear y asociar las solicitudes HTTP con la sesión correcta.

  • Timeout: La propiedad IdleTimeout determina cuánto tiempo dura la sesión antes de expirar por inactividad.

🔒 Seguridad

  • Protección de Datos: ASP.NET Core encripta los datos de sesión usando el sistema de protección de datos.

  • HttpOnly: Marcar la cookie de sesión como HttpOnly previene que los scripts del lado del cliente accedan a la cookie.

🔄 Manejo del Ciclo de Vida de la Sesión

  • Inicio: La sesión comienza cuando se establece un valor por primera vez.

  • Fin: La sesión termina cuando expira o se limpia manualmente.

🚀 Rendimiento y Escalabilidad

  • Almacenamiento en Memoria: Para aplicaciones pequeñas o con poco tráfico.

  • Distribuido: Para aplicaciones grandes o con alta

Última actualización