gpt4 book ai didi

node.js - Node js - Bcrypt - 比较方法为正确的输入密码返回false

转载 作者:行者123 更新时间:2023-11-29 12:58:38 27 4
gpt4 key购买 nike

我在这里经历过各种类似的问题,我都试过了,但结果总是“密码错误”。

我正在为 nodejs 使用 bcrypt,我的密码哈希存储在 Postgresql 数据库中。

hashcompare 方法如下:

generateHash : function(password, callBack){

bcrypt.genSalt(8, function(err, salt) {

bcrypt.hash(password, salt, callBack);
});
}

validPassword : function(password, callBack){

bcrypt.compare(password, this.password, callBack);
}

我在下面的代码中使用了这些函数:

//Generating hashing and DB storing
User.generateHash(password, function(err, hash) {

// if there is no user with that email
// create the user
var newUser = User.build({

email: email,
password: hash
})
.save()
.then(function(newUser) {

return done(null, newUser);
})
.catch(function(err){

return done(err, false);
});
});

//...
//Checking the password input for login

user.validPassword(password, function(err, res) {

if(err) throw err;

if(!res){

return done(null, false, req.flash('loginMessage', 'Oops! Wrong password.'));
}
else{

// all is well, return successful user
return done(null, user);
}
});

我希望这很清楚。提前致谢。再见。

更新 I: callBack 添加到 validPassword,尽管这并没有解决问题。而且我还检查了 this.password 值,它是正确的并且符合预期。所以,问题依然存在。

最佳答案

我想你忘了将 callBack 作为参数添加到

validPassword : 函数(密码){

尝试添加是否可以解决您的问题,因此将其更改为

validPassword : function(password, callBack){

另外,我不知道你的 validPassword 函数在哪里,但你可能想检查 this.password 是否确实引用了用户密码。

关于node.js - Node js - Bcrypt - 比较方法为正确的输入密码返回false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36295697/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com