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.
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");
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);
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.
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);
}
});
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.
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta semana estuve recreando la API del plugin para impresoras térmicas en Android (HTTP a…
Hoy te enseñaré a extraer la cadena base64 de una clave PEM usando una función…
Encender un foco con un Bot de Telegram es posible usando una tarjeta como la…
Esta web usa cookies.