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

88
Vistas
cómo verificar si la contraseña coincide antes de cambiar a una nueva pasaporte

Estoy creando una aplicación y tengo problemas con la actualización de la contraseña con el pasaporte y MongoDB. Quiero verificar si el usuario ha ingresado su contraseña real y coincide con lo que está almacenado en la base de datos antes de configurar una nueva.

Esto es lo que tengo hasta ahora:

 if (req.body.password == req.user.password) { if (req.body.newPassword.normalize() == req.body.confirmPassword.normalize()) { // Verifying if the new password matches the confirmation one // before actually changing the password (This part works) } } else { // Handling if the old password does not match the DB } res.redirect('/profile')

He estado intentando cosas como:

 passport.use(new LocalStrategy( function(username, password, done) { User.findOne({ username: req.user.email }, function(err, user) { if (err) { return done(err); } if (!user) { return done(null, false); } if (!user.verifyPassword(req.body.password)) { return done(null, false); } return done(null, user); }); }

Aún así, no funciona... ¿Alguna pista? :)

EDITAR

He estado usando crypto en un intento de obtener el mismo hash que el almacenado en MongoDB. Para registrar un nuevo usuario, uso pasaporte.

 let hash = crypto.createHmac('sha256', secret) .update('I love cupcakes') // I have no idea of what this this line does, actually... .digest('hex'); console.log(hash);

Supongo que en algún momento debería pasar la sal almacenada en DB a una función para verificar que la contraseña que envió sea la misma que la almacenada, simplemente no tengo idea de cómo hacerlo ...

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Intente codificar el req.body.password recibido usando el secreto y ver si coincide con la contraseña ya codificada guardada en la base de datos. Si lo hace, es la misma contraseña anterior.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Después de mucho buscar en Internet, se me ocurrió esto:

 async function fooChangePW(req,res){ req.user.changePassword(req.body.password, req.body.newPassword) .then(() => { console.log('password changed'); }) .catch((error) => { console.log(error); }) res.redirect('/profile') }

Dado que el usuario ya está autenticado, puede ir con req.user.changePassword(oldPassword, newPassword) .

about 4 years ago · Juan Pablo Isaza 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