Javascript 将BCrypt哈希传递给另一个函数
我想使用BCrypt加密一个密码,然后将其传递给另一个函数以将其存储在数据库中。问题是我不能成功通过考试。我在写入db.js:18时收到一个错误:“ReferenceError:hashedPass未定义” 这部分代码进行加密,并且必须将哈希发送到“write.registerUser()”Javascript 将BCrypt哈希传递给另一个函数,javascript,node.js,bcrypt,Javascript,Node.js,Bcrypt,我想使用BCrypt加密一个密码,然后将其传递给另一个函数以将其存储在数据库中。问题是我不能成功通过考试。我在写入db.js:18时收到一个错误:“ReferenceError:hashedPass未定义” 这部分代码进行加密,并且必须将哈希发送到“write.registerUser()” bcrypt.genSalt(saltRounds,function(err,salt){ bcrypt.hash(query.password、salt、函数(err、hashedPass){ cons
bcrypt.genSalt(saltRounds,function(err,salt){
bcrypt.hash(query.password、salt、函数(err、hashedPass){
console.log(hashedPass);//我可以在这里毫无问题地打印哈希
registerUser(函数(数据、fName、lName、电子邮件、角色、日期、hashedPass){
return();
});
});
});代码>将registerUser函数更改为:
registerUser(params, callback) {
var sql = "INSERT INTO users_data (first_name, last_name, email, role, registration_date, active, password) VALUES ('"+params.fName+"', '"+params.lName+"', '"+params.email+"', '"+params.role+"', '"+params.date+"', '"+1+"', '"+params.hashedPass+"')";
con.query(sql, function (err, result) {
if (err) throw err;
callback(result);
});
}
并将哈希生成代码更改为:
bcrypt.genSalt(saltRounds, function(err, salt){
bcrypt.hash(query.password, salt, function(err, hashedPass){
console.log(hashedPass); //I get the hash printed here with no problems
write.registerUser({
data,
fName,
lName,
email,
role,
date,
hashedPass
}, function(results){
console.log(results)
return();
});
});
});
警告:此SQL查询易受SQL注入攻击。明智的做法是使用预先准备好的语句或ORM。registerUser(回调){
——此函数声明只有一个回调
参数。因此那里完全没有定义hashedPass
。registerUser函数中的名字、姓氏等从哪里来?这些与从hash函数传入的参数不匹配。如果是,这些参数是否已定义?如何使用next()
`除了散列部分,所有其他参数都可以正常工作。如果我按原样传递密码,并删除散列函数,则会插入所有详细信息successfuly@zerkms那么它应该是什么样子呢?正如我所说,console.log(hashedPass)write.registerUser上方仅1行打印哈希值。这就是为什么我不明白为什么它不将其传递给函数。谢谢大家。@Porlune提供的更正有效。当然,我会修复注入漏洞。