Ci sono svariati moduli middleware tra cui scegliere per l’autenticazione dell’utente in un’applicazione Node.js, tra cui Passport, express-session, cookie-parser, ecc.
Uno dei più popolari è Passport. Di seguito è illustrato come utilizzare Passport per l’autenticazione dell’utente.
1. Installa Passport e il suo middleware:
npm install passport passport-local1. Importa Passport in app.js:
const passport = require(‘passport’); app.use(passport.initialize());1. Usa uno dei tanti strategies forniti da Passport. Ad esempio, per l’autenticazione locale:
const LocalStrategy = require(‘passport-local’).Strategy; passport.use(new LocalStrategy( function(username, password, done) { User.findOne({ username: username }, function (err, user) { if (err) { return done(err); } if (!user) { return done(null, false, { message: ‘Incorrect username.’ }); } if (!user.validPassword(password)) { return done(null, false, { message: ‘Incorrect password.’ }); } return done(null, user); }); }));1. Creare una sessione utilizzando express-session:
const expressSession = require(‘express-session’); app.use(expressSession({ secret: ‘keyboard cat’, resave: false, saveUninitialized: false }));1. Configura Passport per utilizzare le sessioni:
app.use(passport.initialize()); app.use(passport.session());1. Serializza e deserializza l’utente per mantenerlo nella sessione:
passport.serializeUser(function(user, done) { done(null, user.id); }); passport.deserializeUser(function(id, done) { User.findById(id, function (err, user) { done(err, user); }); });1. Ora sei pronto per l’autenticazione. Utilizza `passport.authenticate()`, specificando la strategia. Ad esempio, per il login dell’utente:
app.post(‘/login’, passport.authenticate(‘local’, { successRedirect: ‘/’, failureRedirect: ‘/login’, failureFlash: true }) );