猫鼬预保存 bcrypt 未保存
mongoose pre saved bcrypt not saved
我遇到了 bcrypt 和 mongoose 预保存功能的问题。
我的日志告诉我,一切都经过哈希处理...但是猫鼬没有正确保存新的哈希密码。
do post save 6BYpYJtD
POST /api/v1/user 200 26.999 ms - 387
do pre save 6BYpYJtD a$OgNaou5y8JO2v4ErcZN4v.2cG9LOPjgJKzptvrKXVgCBRrrFsMHMO
澄清一下:
6BYpYJtD
是我生成的密码,a$OgNaou5y8JO2v4ErcZN4v.2cG9LOPjgJKzptvrKXVgCBRrrFsMHMO
是我的预保存函数生成的哈希:
UserSchema.pre('save', function(next){
var user = this;
user.updated_at = Date.now;
if(user.isModified('password'))
{
bcrypt.genSalt(SALT_WORK_FACTOR,function(err,salt){
if(err) return next(err);
bcrypt.hash(user.password,salt,function(err,hash){
if(err) return next(err);
console.log('do pre save',user.password,hash);
user.password = hash;
console.log(user.password);
next();
});
});
}
return next();
});
没有打印出任何错误,所以我真的不知道我的错误在哪里。有什么建议吗?
经过数小时的调试,终于找到了我的问题的解决方案:
更改密码信息后,您需要 return next(user);
将您的用户对象作为参数。现在它就像一个魅力。
我遇到了 bcrypt 和 mongoose 预保存功能的问题。
我的日志告诉我,一切都经过哈希处理...但是猫鼬没有正确保存新的哈希密码。
do post save 6BYpYJtD
POST /api/v1/user 200 26.999 ms - 387
do pre save 6BYpYJtD a$OgNaou5y8JO2v4ErcZN4v.2cG9LOPjgJKzptvrKXVgCBRrrFsMHMO
澄清一下:
6BYpYJtD
是我生成的密码,a$OgNaou5y8JO2v4ErcZN4v.2cG9LOPjgJKzptvrKXVgCBRrrFsMHMO
是我的预保存函数生成的哈希:
UserSchema.pre('save', function(next){
var user = this;
user.updated_at = Date.now;
if(user.isModified('password'))
{
bcrypt.genSalt(SALT_WORK_FACTOR,function(err,salt){
if(err) return next(err);
bcrypt.hash(user.password,salt,function(err,hash){
if(err) return next(err);
console.log('do pre save',user.password,hash);
user.password = hash;
console.log(user.password);
next();
});
});
}
return next();
});
没有打印出任何错误,所以我真的不知道我的错误在哪里。有什么建议吗?
经过数小时的调试,终于找到了我的问题的解决方案:
更改密码信息后,您需要 return next(user);
将您的用户对象作为参数。现在它就像一个魅力。