2017-01-10 1 views
0
app.post('/verify', function(req, res) { 
// Create a password salt 
var salt = bcrypt.genSaltSync(10); 
    // Salt and hash password 
var passwordToSave = bcrypt.hashSync(password_login, salt) 

    var user_login = req.body.email; 
    var password_login = req.body.password; 


     connection.query('SELECT * FROM USER WHERE email = ?', 
     [user_login], 
      function(err, rows) { 
      if (err) { 
         return done(err); 
        } 
      if (bcrypt.hashSync(password_login, salt) === rows[0].password) { 
       console.log('works'); 
     } 

     }); 

    }); 

Erreur: arguments de données et de sel requis! Quelqu'un peut-il m'aider? Que se passe t-il ici? Comme je peux le voir, je ne pouvais pas comprendre la logique de bcrypt.Erreur: données et arguments de sel requis (ai-je oublié quelque chose)?

Sur MySql le champ de mot de passe est haché mais n'est pas en forme ou comme je peux le dire il ne compare pas avec n'importe quoi ... peut-être devrais-je comparer comparer utilise-t-il quelque chose de cela?

Répondre

1

Vous ne pouvez pas faire bcrypt.hashSync(password_login, salt) == password car vous utilisez un sel aléatoire, ce qui signifie qu'il ne correspondra pas au mot de passe enregistré.

Vous devez utiliser bcrypt.compareSync(password_login, hashedPassword) hashedPassword provient de la sélection que vous avez exécutée dans la base de données à l'aide de l'e-mail envoyé. (par exemple hashedPassword= rows[0].password)

+0

que voulez-vous dire hashedPassword vient de la sélection que vous avez couru sur la base de données? Ce n'est pas déclaré! P.S – egzonszo