gpt4 book ai didi

mysql - Node.js 中的加密

转载 作者:行者123 更新时间:2023-11-29 20:50:16 25 4
gpt4 key购买 nike

我尝试向数据库插入加密值,我可以加密该值,但加密值无法插入数据库。

app.post('/insert', function (req, res) {

// var Fname=req.body.fname;
// var Lname=req.body.pwd;

var data = {
Fname: req.body.fname,
Lname: req.body.Lname
};

function hashP(getit, cb) {
bcrypt.genSalt(15, function (err, salt) {
if (err) {
return console.log(err);
}
cb(salt);
bcrypt.hash(getit, salt, function (err, gotit) {
if (err) throw err;
return this.cb(null, gotit);
})
})
}

hashP(data.Lname, function (err, gotit) {
if (err) throw err;
data.Lname = hash;
})

console.log(data.Lname);
con.query("insert into test set ?", [data], function (err, rows) {
if (err) throw err;
res.send("Value has bee inserted");
})
})

这是我的 html 表单页面:

<body>
<form action="http://localhost:8888/insert" method="POST" >
<label>Name:</label><input type="text" name="fname"></br>
<label>Lname:</label><input type="text" name="Lname"></br>
<button type="submit">Submit</button>
</form>
</body>

最佳答案

看起来你的函数 hashP(getit,cb) 在错误的时间调用了 cb 函数,不是吗?尝试以下方法

function hashP(getit, cb){
bcrypt.genSalt(15, function (err, salt){
if(err) {
return cb(err, null);
}
bcrypt.hash(getit, salt, function (err, hash){
if(err) {
return cb(err, null);
}
return cb(null, hash);
})
})
}

此外,您需要在处理程序中调用它,如下所示:

app.post(...., function(req, res) {  

var data = { ... }

function hashP(data, cb){ ... }

hashP(data.Lname, function (err, hash) {
if (err) throw err;
data.Lname = hash;
// NOW, SAVE THE VALUE AT DB
con.query("insert into test set ?", [data], function (err, rows) {
if (err) throw err;
res.send("Value has bee inserted");
})
}
}

这里的问题是异步执行,您使用数据调用con.query 之前 数据hashP返回

关于mysql - Node.js 中的加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38114610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com