与nodejs进行比较的bcrypt始终为false

时间:2017-09-25 06:50:04

标签: node.js bcrypt

即使用户密码与我在数据库中拥有的哈希密码相匹配,我总是会因为未知原因与这一行阻止进行错误的比较。请帮忙。

        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-

1 个答案:

答案 0 :(得分:0)

也许,result === true返回false,因为结果可能不是实际的真值。它可能是一个真实的值,与==相比,它返回​​true。 (来自bcrypt的npm) 你可以简单地写一下:

if (err) {
  return callback(err);
}
if (result) {
  return callback(null, user);
} 
return callback();