【发布时间】:2022-01-03 16:06:07
【问题描述】:
密码哈希正在工作并且它的存储正确 但是在比较 res 时总是返回 false 即使密码正确。我正在使用 bcryptjs 进行散列
app.post("/api/register", (req, res) => {
const { name, email, school, phone, password } = req.body;
bcrypt.genSalt(10, function (err, salt) {
bcrypt.hash(password, salt, function (err, hash) {
con.query(
`INSERT INTO users(uid, u_name, u_email, u_school, u_phone, u_password) VALUES ('[value-1]','${name}','${email}','${school}','${phone}','${hash}')`,
function (err, result) {
if (err) {
console.log(err);
}
console.log(result);
}
);
});
});
});
app.post("/api/login", (req, res) => {
const { email, password } = req.body;
con.query(
`SELECT * FROM users WHERE u_email='${email}'`,
function (err, result) {
if (err) {
res.send(err.sqlMessage).end();
} else {
bcrypt.compare(password, result[0].u_password).then((res) => {
console.log(res);
});
}
}
);
});
【问题讨论】:
-
您是否尝试过注销
result[0].u_password是什么?它可能是未定义的 -
是的,它返回如下内容:$2a$10$IaiCd6FFn/Z6RZBUTL93jON
-
你是在和加密密码比较吗?或在输入密码时传递密码?您可以控制台记录密码。但基本上这两个值并不相等,所以你得到了错误
-
bcrypt.compare(password, result[0].u_password) password='1234' result[0].u_password是加密的
-
$2a$10$RkUHTh90A4neEz9mvg2gVea //console.log(result[0].u_password);第1234章