gpt4 book ai didi

javascript - NodeJs 检查用户名和密码返回 null

转载 作者:太空宇宙 更新时间:2023-11-04 03:30:29 26 4
gpt4 key购买 nike

我正在尝试检查存储在数据库中的输入的用户名和密码。我的解决方案不正确,我认为可能有比我的代码更好的东西。

到目前为止:

function login (username, password, callback) {
var query = "SELECT * FROM users WHERE username = ?";

connection.query(query, [username], function (err, results) {
if (err) return callback(err);
if (results.length === 0) return callback();
var user = results[0];

if (!bcrypt.compareSync(password, user.password)) {
return callback();
}

callback(null, {
id: user.id.toString(),
});

});
}
app.get('/salam', function (req, res) {
var username = 'mahdi';
var originalPassword = 'a';

login(username , originalPassword,function (callback) {
console.log(callback);
});
});

在我的代码中,console.log(callback); 返回 null,但用户名和密码是正确的。我该如何解决这个问题?

最佳答案

在成功回调函数中,您有 2 个参数,但在错误回调中只有一个参数。

错误成功情况下,第一个参数的值将始终为null,而在if (!bcrypt.compareSync(password, user.password)) {情况下,第一个参数的值将为未定义,因为没有值作为参数传递。

建议:使用第一个参数作为Boolean(falsetrue)并根据值处理回调。

function login(username, password, callback) {
var query = "SELECT * FROM users WHERE username = ?";

connection.query(query, [username], function(err, results) {
if (err) return callback(false);
if (results.length === 0) return callback();
var user = results[0];

if (!bcrypt.compareSync(password, user.password)) {
return callback(false);
}
callback(true, {
id: user.id.toString(),
});

});
}
app.get('/salam', function(req, res) {
var username = 'mahdi';
var originalPassword = 'a';

login(username, originalPassword, function(success, value) {
if (success) {
console.log(value);
}
});
});

关于javascript - NodeJs 检查用户名和密码返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38698552/

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