【发布时间】:2019-12-27 02:58:28
【问题描述】:
我有注册/登录系统,对于散列,我使用了第三方库 bcryptjs,它可以工作(我的意思是它对 passwofrd 进行散列),但问题是这个密码是原始保存在数据库中的。这是我的猫鼬预保存钩子代码
AdminSchema.pre('save', async function(next){
var user = this;
if(!user.isModified('password')) return next();
bcrypt.genSalt(SALT_WORK_FACTORY, function(err, salt){
if(err) return next(err);
bcrypt.hash(user.password, salt,function(err,hash){
if(err) return next(err);
console.log(hash)
user.password = hash;
console.log(user.password)
next();
})
})
})
这里是registration.js中的保存方法
let admin;
admin = new Admin();
admin.username = username;
admin.password = password;
admin.save(function(err, user){
if(err){
console.log(err)
return res.status(500).send({message:err.message})
}
console.log(user)
const redirectTo = '/';
return res.status(200).send({redirectTo})
})
}
当我在 pre hook 中记录 user.password 它显示我哈希
但是当我在save 登录用户时,它会向我显示原始文本。
什么是问题?
谢谢
【问题讨论】:
标签: node.js express mongoose hook bcrypt