Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

634
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda