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

时间:2017-12-13 20:30:56

标签: javascript node.js bcrypt

我希望使用BCrypt加密密码,然后将其传递给另一个函数以将其存储在DB中。问题是我不能成功通过它。我收到一个错误:" ReferenceError:hashedPass未定义"在write-to-db.js:18

这部分代码加密并且必须将散列发送到" 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,我尝试保存到DB但失败了:



	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);
		});
	}




有什么想法吗?

1 个答案:

答案 0 :(得分:1)

将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 INJECTION的攻击。你最好使用准备好的陈述或ORM。