Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将BCrypt哈希传递给另一个函数_Javascript_Node.js_Bcrypt - Fatal编程技术网

Javascript 将BCrypt哈希传递给另一个函数

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加密一个密码,然后将其传递给另一个函数以将其存储在数据库中。问题是我不能成功通过考试。我在写入db.js:18时收到一个错误:“ReferenceError:hashedPass未定义”

这部分代码进行加密,并且必须将哈希发送到“write.registerUser()”

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提供的更正有效。当然,我会修复注入漏洞。