将BCrypt哈希传递给另一个函数
我想要使用BCrypt来encryption密码,然后将它传递给另一个函数来将其存储在数据库中。 问题是我不能成功通过它。 在write-to-db.js:18上收到错误:“ReferenceError:hashedPass未定义”
这部分代码encryption并且必须将散列发送到“write.registerUser()”
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(function(data, fName, lName, email, role, date, hashedPass){ return(); }); }); });
这是写入到db.js,我试图保存到数据库但失败:
registerUser(Callback) { var sql = "INSERT INTO users_data (first_name, last_name, email, role, registration_date, active, password) VALUES ('"+fName+"', '"+lName+"', '"+email+"', '"+role+"', '"+date+"', '"+1+"', '"+hashedPass+"')"; con.query(sql, function (err, result) { if (err) throw err; Callback(result); }); }
有任何想法吗?
改变你的注册用户function:
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 INJECTION的影响。 使用预准备语句或ORM是明智的。