Las sesiones son una forma de mantener datos sobre el usuario en distintos requests. Esto es útil para cosas como mantener a un usuario logueado mientras navega a través de diferentes páginas en el sitio web. Aquí está cómo configurar y trabajar con sesiones en Express.js utilizando el middleware `express-session`.
Primero, instala el middleware `express-session` utilizando el comando npm:
```
npm install express-session
```
Después, debes configurar el middleware `express-session` en tu aplicación Express.js. Esto implica importar el módulo y luego utilizar `app.use()` para agregarlo a la pila de middleware de Express:
```javascript
var express = require(‘express’);
var session = require(‘express-session’);
var app = express();
app.use(session({
secret: ‘tu secreto aquí’,
resave: false,
saveUninitialized: true,
}));
```
La propiedad `secret` es un string que se utiliza para firmar el ID de la sesión. Debería mantenerse en secreto.
Las propiedades `resave` y `saveUninitialized` son requeridas, pero no las necesitas entender completamente para trabajar con sesiones.
- `resave: false` significa que la sesión no se guardará en cada respuesta, incluso si no se modificó.
- `saveUninitialized: true` significa que las sesiones que son ‘nuevas’ pero no ‘modificadas’ se guardarán en el almacenamiento de sesiones.
Para iniciar una sesión, simplemente debes añadir datos al objeto `req.session`:
```javascript
app.get(‘/start’, function(req, res){
req.session.user = {id: 1, name: ‘John’};
res.send(‘Session started’);
});
```
Para acceder a los datos de sesión en otro request, simplemente lees del mismo objeto `req.session`:
```javascript
app.get(‘/data’, function(req, res){
if(req.session.user){
res.send(‘User Id: ‘ + req.session.user.id + ‘ – User Name: ‘ + req.session.user.name);
} else {
res.send(‘No session started’);
}
});
```
Finalmente, para destruir una sesión, puedes llamar a `req.session.destroy()`:
```javascript
app.get(‘/logout’, function(req, res){
req.session.destroy();
res.send(‘Session destroyed’);
});
```
Las sesiones son una forma poderosa y flexible de mantener el estado entre requests en Express.js. Sin embargo, ten cuidado de no guardar demasiados datos en la sesión, ya que podría abrumar al almacén de sesiones.