Node.JS

Sesiones en Node con express.js

En este post te mostraré un ejemplo sencillo y claro de cómo manejar la sesión o persistencia de sesión en Node.js usando el framework express.js

Vamos a usar el paquete express-session; y de este modo podremos acceder a los datos de sesión de la petición.

Gracias a la sesión podemos hacer varias cosas. Por ejemplo, restringir el acceso solo a usuarios logueados o llevar algo como un carrito de compras.

Instalando express-session

Comienza instalando la dependencia con:

npm install --save express-session

Espera a que se termine de instalar y después impórtalo:

const session = require("express-session");

Configurar uso de sesión

Ahora instancia tu app, y después de eso indica que usarás el middleware de sesión. Para ello necesitas configurar una clave secreta. Esta debe ser aleatoria y no deberías exponerla. Aquí la pongo solo como ejemplo:

app.use(session({
  secret: "987f4bd6d4315c20b2ec70a46ae846d19d0ce563450c02c5b1bc71d5d580060b",
  saveUninitialized: true,
  resave: true,
}));

Si tú quieres generar una clave aleatoria puedes usar uno de mis programas para generar clave hexadecimal aleatoria (descarga el exe).

Nota importante: la llamada a app.use() debe ser antes de que definas tus rutas.

Por ejemplo, lo siguiente es correcto:

// Primero usar la sesión
app.use(session({
  // Se recomienda cambiar en cada entorno
  // https://parzibyte.me/blog/2020/06/02/sesiones-node-express-js/#Configurar_uso_de_sesion
  secret: "123",
  saveUninitialized: true,
  resave: true,
  cookie:{
    maxAge: 60000,
  }
}));
// Y después definir las rutas!
app.use('/', indexRouter);
app.use('/productos', productosRouter);
app.use('/usuarios', usuariosRouter);

Escribir datos en la sesión

Ahora en tus rutas de express configura todo normalmente. Supongamos que tienes la siguiente función para establecer datos en la sesión:

app.get("/guardar_en_sesión", (req, res) => {
  req.session.nombre = "Luis";
  req.session.edad = 23;
  req.session.web = "https://parzibyte.me";
});

Como puedes ver definimos una función que configura esa ruta. El primer parámetro es la petición; justamente en session podemos establecer todos los datos. En la práctica yo he establecido incluso arreglos.

Leer datos de sesión

Ahora para leer podemos acceder igualmente a session y comprobar si hay un valor:

app.get("/ruta_solo_logueados", (req, res) => {
  // Si, por ejemplo, no hay nombre
  if(!req.session.nombre){
    res.end("No tienes permiso. Fuera de aquí");
  }else{
    // Ok, el usuario tiene permiso
    res.end("Hola " + req.session.nombre);
  }
});

En resumen

Instalamos el paquete de express-session. Lo usamos al instanciar la app y lo configuramos con una clave secreta y aleatoria.

Para acceder a la sesión accedemos a req.session en donde req también es llamada petición o request. Así de simple; todo esto usando JavaScript del lado del cliente.

Nota importante: si estás usando fetch, por favor mira cómo configurarlo para que funcione con express.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

1 semana hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

2 semanas hace

Esta web usa cookies.