La gestione della sessione in Node.js è fondamentale per mantenere lo stato tra le richieste HTTP, soprattutto nelle applicazioni web che richiedono l'autenticazione dell'utente. Node.js, essendo stateless per natura, necessita di strumenti esterni per gestire le sessioni, come ad esempio express-session
.
Installazione del Middleware
Per iniziare, è necessario installare il pacchetto express-session
:
npm install express express-session
Configurazione di express-session
Una volta installato, possiamo configurare express-session
nel nostro server Express:
const express = require('express');
const session = require('express-session');
const app = express();
app.use(session({
secret: 'mia-chiave-segreta',
resave: false,
saveUninitialized: true,
cookie: { secure: false } // impostare true se si usa HTTPS
}));
Utilizzo della Sessione
Dopo la configurazione, possiamo accedere e modificare i dati di sessione tramite req.session
:
app.get('/login', (req, res) => {
req.session.utente = 'Mario';
res.send('Utente loggato');
});
app.get('/profilo', (req, res) => {
if (req.session.utente) {
res.send(`Profilo di ${req.session.utente}`);
} else {
res.send('Utente non autenticato');
}
});
Persistenza della Sessione
Per ambienti di produzione, si consiglia di usare uno store persistente come connect-redis
o connect-mongo
, invece della memoria predefinita:
npm install connect-redis redis
const RedisStore = require('connect-redis').default;
const session = require('express-session');
const redis = require('redis');
let redisClient = redis.createClient();
app.use(session({
store: new RedisStore({ client: redisClient }),
secret: 'mia-chiave-segreta',
resave: false,
saveUninitialized: false
}));
Conclusione
La gestione della sessione in Node.js con express-session
è semplice e potente. Permette di mantenere lo stato dell'utente e di costruire applicazioni web sicure ed efficienti. Tuttavia, per una maggiore scalabilità e sicurezza, è consigliabile integrare una soluzione di storage esterna e utilizzare HTTPS in produzione.