Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

633
Views
Cómo mostrar los mensajes de error de Passport.js al usuario

Estoy tratando de configurar una estrategia local y usar failureMessages de error que muestran errores de autenticación al usuario, pero no estoy seguro de cuál es la forma correcta de hacerlo.

Los mensajes de falla se agregan a los mensajes de req.session.messages cada vez que ocurre una falla, pero los mensajes de sesión nunca se borran. Aquí está el resultado:

ingrese la descripción de la imagen aquí

Obviamente, el último mensaje es el más reciente, pero ¿cómo sé si los mensajes son de una falla actual o de una que ocurrió en el pasado porque solo quiero mostrar un mensaje de error si es una falla actual?

autenticación.js

 passport.use(new LocalStrategy( function(username, password, done) { myDatabase.findOne({ username: username }, function(err, user) { if (err) { return done(err); } if (!user) { return done(null, false, { message: 'Incorrect username or password.' }); } if (!bcrypt.compareSync(password, user.password)) { return done(null, false, { message: 'Incorrect username or password.' }); } return done(null, user); }); } ));

rutas.js

 app.route('/login').post(passport.authenticate('local', { failureRedirect: '/', failureMessage: true }), (req, res) => { res.redirect('/profile'); });

servidor.js

 app.use(session({ secret: process.env.SESSION_SECRET, resave: true, saveUninitialized: true, cookie: { secure: false }, key: 'express.sid', store: store })); app.use(passport.initialize()); app.use(passport.session());
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Pude borrar los req.session.messages antes de enviar un nuevo mensaje de falla al configurar la opción passReqToCallback . De esta forma sabemos que cualquier mensaje contenido en req.session.messages es un nuevo fallo.

 passport.use(new LocalStrategy({ passReqToCallback: true }, function(req, username, password, done) { myDatabase.findOne({ username: username }, function(err, user) { if (err) { return done(err); } if (!user) { req.session.messages = []; return done(null, false, { message: 'Incorrect username or password.' }); } if (!bcrypt.compareSync(password, user.password)) { return done(null, false, { message: 'Incorrect username or password.' }); } return done(null, user); }); } ));
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!