即使用户密码与我在数据库中拥有的哈希密码相匹配,我总是会因为未知原因与这一行阻止进行错误的比较。请帮忙。
bcrypt.compare(password, user.password , function(error, result) {
console.log(result==true);
if (result === true) {
return callback(null, user);
} else {
return callback();
}
})
});
}
// hash password before saving to database
UserSchema.pre('save', function(next) {
var user = this;
bcrypt.hash(user.password, 10, function(err, hash) {
if (err) {
return next(err);
}
user.password = hash;
next();
})
});
完整的项目和代码可以在这里找到: https://github.com/eladnm/Trinity-Management-System-
答案 0 :(得分:0)
也许,result === true
返回false,因为结果可能不是实际的真值。它可能是一个真实的值,与==
相比,它返回true。 (来自bcrypt的npm)
你可以简单地写一下:
if (err) {
return callback(err);
}
if (result) {
return callback(null, user);
}
return callback();