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

647
Vistas
mi resultado de usar bcryptjs compare devuelve falso. Al comparar el texto sin formato con la contraseña hash de la base de datos (mongodb). (node-js)

Desafortunadamente, ¿el resultado de la función de comparación siempre es falso? Incluso cuando se publican datos correctos. ¿Crees que puede tener algo que ver con la función de comparación de bcrypt?

hash de registro y sal de la contraseña

 module.exports.signupPost = async (req, res) => { const { email, password } = req.body; //create a user with hashed password try { const newUser = await User.create({ email, password }); newUser.password = await bcrypt.hash(newUser.password, 12); newUser.save(); res.status(200).json({ user: newUser._id }); } catch (err) { errors = handlerErr(err); res.status(400).json({ errors }); } };

iniciar sesión comparar la contraseña con la contraseña hash

 module.exports.loginPost = async (req, res) => { const { email, password } = req.body; try { const user = await User.findOne({ email }); if (!user) { res.status(404).json({ email: "No user found" }); } //if user exist check password is a match const user = await User.findOne({ email }); if (!user) { return res.status(404).json({ email: "No user found" }); } try { const match = await bcrypt.compare( password.toString(), user.password, function (err, res) { console.log(res);// returns false } ); } catch (err) {} };
 user schema

esquema de usuario de la base de datos

 const userSchema = new mongoose.Schema({ email: { type: String, required: [true, "Please enter a email"], unique: true, lowercase: true, }, password: { type: String, required: [true, "Please enter a password"], lowercase: true, }, });
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Eliminar lowercase: true del esquema de contraseña.

Estás convirtiendo la contraseña a minúsculas antes de codificarla y al guardar el hash.


Debe permitir el uso de mayúsculas en las contraseñas eliminando lowercase: true en su esquema de "contraseña" de mongoose. Esta configuración hace que todas las cadenas se transformen a minúsculas antes de almacenarse en la base de datos.

La implementación actual tiene 2 errores:

  1. Cuando guarda newUser , la contraseña de entrada se convierte a minúsculas en la base de datos que luego usa para generar el hash.
  2. Cuando guarda la contraseña con hash en la base de datos, pierde las mayúsculas y, por lo tanto, el hash ya no es exacto.
about 4 years ago · Juan Pablo Isaza Denunciar

0

De acuerdo con la documentación , debe verificar el resultado de esta manera:

 bcrypt.compareSync(password, user.password); // result true or false
about 4 years ago · Juan Pablo Isaza Denunciar

0

 const userSchema = new mongoose.Schema({ email: { type: String, required: [true, "Please enter a email"], unique: true, lowercase:true, }, password: { type: String, required: [true, "Please enter a password"], }, });
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