在将用户密码存储在我的数据库中之前,我正在使用以下代码对用户密码进行哈希处理(希望是加盐)。
// hash the password before the user is saved
ConsultantSchema.pre('save', function(next) {
var user = this;
// hash the password only if the password has been changed or user is new
if (!user.isModified('password')) return next();
// generate the hash
bcrypt.hash(user.password, null, null, function(err, hash) {
if (err) {
logger.error("bcrypt.hash "+err);
return next(err);
}
// change the password to the hashed version
user.password = hash;
next();
});
});
我感到困惑的是,这部分
bcrypt.hash(user.password, null, null, function(err, hash) {
我从教程中得到了这段代码,我经常看到它在寻找答案。根据 bcrypt 的文档(https://www.npmjs.com/package/bcrypt),我本来期望以下代码
const saltrounds = 10;
bcrypt.hash(user.password, saltRounds, function(err, hash) {
正在工作,但这会破坏我的程序而不会出错。
我的问题是:为什么有两个“空”参数?它们是干什么用的?哈希是否基于具有两个空值的代码进行加盐?
提前感谢您的帮助!