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

Cancelar trabajo de impresión con C++

En este post te quiero compartir un código de C++ para listar y cancelar trabajos…

22 horas hace

Copiar bytes de Golang a JavaScript con WebAssembly

Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…

4 semanas hace

Imprimir PDF con Ghostscript en Windows de manera programada

Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…

4 semanas hace

Hacer pruebas en impresora térmica Bluetooth Android

Esta semana estuve recreando la API del plugin para impresoras térmicas en Android (HTTP a…

1 mes hace

Limpiar clave PEM

Hoy te enseñaré a extraer la cadena base64 de una clave PEM usando una función…

1 mes hace

Foco con Telegram, apagador de 3 vías, relevador y ESP8266

Encender un foco con un Bot de Telegram es posible usando una tarjeta como la…

1 mes hace

Esta web usa cookies.