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

标签 node.js postgresql sequelize.js bcrypt

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

我正在为 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/

相关文章:

javascript - 运行 grunt-bower 抛出 _.object 不是函数错误

node.js - Sails.js + Passport.js 通过 websockets 进行身份验证

postgresql - 由于未绑定(bind) PersistentVolumeClaim,SchedulerPredicates 失败

node.js - 如何在 NodeJS 中创建多个数据库 Sequelize session

css - 使用 kss-node 生成样式指南时出现图像引用问题

node.js - 其他服务中的 @Inject 服务 - Nest 无法解析依赖项

database - 数据库中一张大表还是许多小表?

javascript - 如何设置 JSON 对象的大小限制?

node.js - 寻找具有关联支持的 sequelize.js REST API 生成器

firebase - 如何连接到 Firebase 云功能中的 Sequelize 数据库?