Javascript bcrypt.compare始终返回false
我正在尝试为我的表单创建登录身份验证。我会记录密码以检查我是否做错了什么,但似乎什么都没用。 谢谢 当bcrypt.compare将数据库的结果与字符串密码进行比较时,它总是返回falseJavascript bcrypt.compare始终返回false,javascript,node.js,bcrypt,Javascript,Node.js,Bcrypt,我正在尝试为我的表单创建登录身份验证。我会记录密码以检查我是否做错了什么,但似乎什么都没用。 谢谢 当bcrypt.compare将数据库的结果与字符串密码进行比较时,它总是返回false passport.use(new LocalStrategy( function (username, password, done) { User.getUserById(username, function (err, user) {
passport.use(new LocalStrategy(
function (username, password, done) {
User.getUserById(username, function (err, user) {
if (!user.length) {
return done(null, false, { message: 'Invalid Credentials! Please try again.' });
}
else {
bcrypt.compare(password, user[0].password, function (err, res) {
return console.log(res)
if (err) return done(err);
if (res == true) {
User.getUserType(username, function (err, res1) {
return done(null, res1[0]);
});
}
else {
// return done(null, false, { message: 'Invalid Credentials! Please try again.' });
return console.log("thank you, i see error")
}
});
}
});
}));
因此,return console.log(res)总是给出false。有什么解决方案吗?您的“getUserById”函数是否返回用户数组?您使用的是
mongoose
还是MongoDB
驱动程序?因为getUserById
不是一个函数,您可能是指findById
@matrixersp我正在使用MySQLDB@Eduardo这意味着在数据库中的用户名和密码的数组集合中返回相应的密码,然后进行验证比较。请检查是否安装了bcrypt而不是bcryptjs