【问题标题】:mongoose pre saved bcrypt not savedmongoose 预先保存的 bcrypt 未保存
【发布时间】:2016-02-01 05:22:05
【问题描述】:

我对 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();
});

没有打印任何错误,所以我真的不知道我的错误可能是什么。有什么建议吗?

【问题讨论】:

  • 字段password 仅包含type: String 的声明

标签: javascript node.js mongodb mongoose bcrypt


【解决方案1】:

几个小时的调试后,才找到解决我的问题的方法:

更改密码信息后,您需要将用户对象作为参数return next(user);。现在它就像一个魅力。

【讨论】:

    猜你喜欢
    • 2018-11-07
    • 2021-06-15
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多