当我尝试在我的Node应用程序中验证用户的现有密码时,出现了[错误:需要数据和哈希参数]
错误。 这种情况下,我要求用户在更改用户配置文件页面中的密码之前验证其现有密码。 我的技术栈是使用passport-local与bcrypt的node + mondodb(通过mongoose)。
相关代码如下:
// code trying to match that returns the aforementioned error
req.user.comparePassword(req.body.password, function (err, isMatch) {
if (err) {
return console.error(err);
}
if (isMatch) {
console.log('passwords match');
// now save new password
// Password verification
userSchema.methods.comparePassword = function (candidatePassword, cb) {
bcrypt.compare(candidatePassword, this.password, function (err, isMatch) {
if (err) return cb(err);
cb(null, isMatch);
});
};
}
}
req.user
引用当前用户对象,而 `req.body.password' 是从用户的 POST 获得的密码。我正在使用来自 passport-local 示例 这里 的 UserSchema、passport 策略和 Bcrypt 配置。
有人可以指导如何在更新之前验证密码是否匹配吗?