Nœud de bcrypt comparer renvoie toujours false

Je suis perplexe, essayant d'obtenir mes mots de passe pour réussir à comparer avec bcrypt l'aide d'un noeud. Peut-être que j'ai raté quelque chose, mais sur la création de compte, j'ai effectuer les opérations suivantes dans l'inscription de la méthode (avec un peu de code abrégé):

bcrypt.genSalt(10, function(err, salt) {
               if(err) {

               }
               bcrypt.hash(user.Password, salt, function(err, hash) {
                           console.log('hashing and saving');
                           db.query(db insert code, function (error, rows, fields) {
                                    if(error) {
                                    console.log(error);
                                    res.setHeader('500', { 'Content-Type': 'x-application/json'});
                                    res.send({UserId: 0, ErrorMessage: 'Something terrible happened.'});
                                    } else {
                                    console.log('User created : ' + rows.insertId);
                                    res.setHeader('200', { 'Content-Type': 'x-application/json'});
                                    res.send({UserId: rows.insertId});
                                    }
                                    });
                           });
               });

return next();

Tout cela fonctionne très bien. Ma db a le mot de passe crypté. Mais quand un utilisateur se connecte, je ne peux pas obtenir un résultat réussi de bcrypt.comparer:

db.query(get account code, function(error, rows, fields) {
         if(rows.length == 1) {
           bcrypt.compare(request.params.password, rows[0].Password, function(err,res) {
              if(err) { console.log(err.toString()); }
              if(res == true)
              {
                        response.setHeader('200', { 'Content-Type': 'x-application/json' });
                        response.send({result: true});
              } else {
                        response.setHeader('401', { 'Content-Type': 'x-application/json' });
                        console.log('invalid password');
                        response.send({result:false});
                     }
              });
         }
        });

return next();

Et je finis toujours avec mot de passe invalide. Dois-je prendre le texte en clair le mot de passe et de les chiffrer de nouveau avant de le comparer à ce que je sors de la base de données?

OriginalL'auteur cmcd | 2013-02-10