Bcrypt NodeJS比较密码始终返回false

时间:2019-12-09 19:13:05

标签: node.js webcrypto-api nodejs-server jbcrypt

所以很明显,我正在使用bcrypt来注册和哈希我的密码,并且可以正常工作。 现在我要进行登录,必须比较表单密码和数据库中的哈希密码,这就是我的操作方式:

// Get post data
let email = req.body.email;
let password = req.body.password;

con.query("SELECT * FROM users WHERE email = ?", email, function (err, result, fields) {
    bcrypt.compare(password, result[0].password, function(err, result) {
        if (err) { throw (err); }
        console.log(result);
    });
});

它总是返回false;如果我用console.log result [0] .password找回了我的哈希密码,那很好,但是为什么它总是返回false?

1 个答案:

答案 0 :(得分:0)

我建议您尝试将if语句更改为:

con.query("SELECT * FROM users WHERE email = ?", email, function (err,
     result, fields) {
         bcrypt.compare(password, result[0].password, function(err, result) {
             if (!result) { throw (err); }
             console.log(result);
         }); 
    });