所以显然我正在使用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;如果我控制台.log result[0].password,我会找回我的哈希密码,所以这很好,但为什么它总是返回false?
我建议您尝试将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);
});
});