Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

556
Visualizações
Bcryptjs siempre devuelve falso

Hola, estoy tratando de usar la biblioteca bcriptjs para comparar la contraseña cifrada con la contraseña de la base de datos.
Estoy usando el método "comparar".

Los valores que le agrego al método son:

  • Primero, la contraseña que me da el usuario. ( contraseña )
  • En segundo lugar, la contraseña cifrada de la base de datos. ( pasar_db )

    Pero siempre devuelve falso
 const bcrypt = require('bcryptjs') const create = (req, res) => { const { email, password } = req.body; if (password.length < 6) { res.send({ msgType: "error", msg: "Contraseña almenos 6 caracteres" }); } else { const hash = bcrypt.hashSync(password, 6); db.query( "INSERT INTO users (email, password) VALUES (?,?)", [email, hash], (err) => { res.send({ msgType: "success", msg: "Usuario creado correctamente" }); } ); } }; //TODO Login dont work always return false const login = (req, res) => { //Password from req.body const { email, password } = req.body; db.query( "SELECT password FROM users WHERE email = ?", [email], (err, result) => { // Password encrypted from database pass_db = result[0].password; if(err){ res.send({msgType:'error', msg:'Incorrect Login'}) } if(result.length > 0){ //Compare password from req.body with password encryted from database const validate = bcrypt.compareSync(password, pass_db); //Always false console.log(validate); if(validate){ res.send({msgType:'success', msg: "Correct login" }) }else{ res.send({msgType:'error', msg: "Incorrect email or password" }); } }else{ res.send({msgType:'error', msg: "Incorrect email or password" }); } } ); };

También probé este código pero no funcionó.

 bcrypt.hash(password, 6, function (err, hash) { if (err) { throw err; } bcrypt.compare(pass_db, hash, function (err, result) { if (err) { throw err; } console.log(result); }); });

Espero que me puedan ayudar con este problema, gracias.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Siempre que la contraseña almacenada en la base de datos se recupere correctamente, debería funcionar. Simplifiqué el programa para no usar una base de datos (solo un objeto local para almacenar la contraseña codificada) y funciona bien. Como estoy usando los mismos comandos bcrypt que usted, lo único que puedo imaginar es que hay un problema con la contraseña cifrada que no regresa de la base de datos correctamente. Intente imprimir el valor hash durante la create y nuevamente después de recuperarlo de la base de datos y confirme que coincidan. Si pass_db no es exactamente lo que debería ser, eso explicaría por qué no puede comparar con éxito. ¿Está seguro de que el result[0] que regresa de db.query es un objeto JSON que tiene un atributo de password ?

Aquí está mi versión simplificada del código que funciona sin usar la base de datos:

 const bcrypt = require('bcryptjs') const passwords = {}; const create = async (email, password) => { if (password.length < 6) { console.log("Password must be at least 6 characters"); } else { const hash = bcrypt.hashSync(password, 6); passwords[email] = hash; // Store the hash in the passwords instead of db } }; const login = (email, password) => { const pass_db = passwords[email]; // Retrieve hash from passwords instead of db if (pass_db) { const validate = bcrypt.compareSync(password, pass_db); if (validate) { console.log('Correct login'); } else { console.log('Incorrect email or password'); } } else { console.log('Incorrect email or password'); } }; const email = 'abc@mail.com'; const pw = 'testpass12345'; create(email, pw); console.log('Try the right password'); login(email, pw); console.log('Try the wrong password'); login(email, 'wrongpw'); console.log('Try the wrong email'); login('unknown@abc.com', 'blah');

Ejecutar este programa da el siguiente resultado:

 Try the right password Correct login Try the wrong password Incorrect email or password Try the wrong email Incorrect email or password
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda