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:
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:
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:
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:
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:
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.