【发布时间】:2021-11-06 19:45:28
【问题描述】:
我正在尝试将数据库中密码的哈希值与表单中提交的密码进行比较。
所以我有一个登录函数,它通过他的电子邮件地址检索用户,并将他在数据库中的密码哈希与用户发送的密码哈希(使用 bcrypt)进行比较。这里是:
exports.login = (req, res, next) => {
async function checkUser() {
const { user_email, user_password: clearPassword } = req.body;
let sql = `SELECT user_password FROM users WHERE user_email=${user_email};`;
db.query(sql, async (err, result) => {
if (err) {
res.status(404).json({ err });
throw err;
}
// const result1 = Object.values(JSON.parse(JSON.stringify(result)));
console.log("Résult after transformation : ", result);
console.log(typeof result, typeof clearPassword);
const match = await bcrypt.compare(clearPassword, result);
if (match) {
console.log("match :)");
} else {
console.log("not match :(");
}
});
}
checkUser();
};
问题是每次我提交密码时都会出错:; 这是错误: 密码必须是字符串,而我有一个对象。我尝试将其转换为带有注释行的字符串: // const result1 = Object.values (JSON.parse (JSON.stringify (result)))
请问如何比较我的两个密码?
【问题讨论】: