[英]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 $2a$10$OgNaou5y8JO2v4ErcZN4v.2cG9LOPjgJKzptvrKXVgCBRrrFsMHMO
弄清楚: 6BYpYJtD
是我生成的密碼, $2a$10$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);
以您的用戶對象作為參數。 現在它就像一種魅力。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.