bcrypt compareSync returns false 即使它们有相同的字符串
bcrypt compareSync returns false even they have same string
我正在尝试实现登录功能
当我像这样创建登录功能时
login: (req,res) => {
const body = req.body;
getUserByEmail(body.email,(err,results)=>{
if(err){
console.log(err);
}
if(!results){
return res.json({
sucess: 0,
data: "Invalid email or password 1"
});
}
console.log(body.pw);
console.log(results.pw);
const result = compareSync(body.pw,results.pw);
console.log(result)
if(result){
results.pw = undefined;
const jsontoken = sign({result: results},"1234413",{
expiresIn: "1h"
});
return res.json({
sucess: 1,
message: "login sucessfully",
token: jsontoken
});
}else{
return res.json({
sucess: 0,
data: "Invalid email or password2"
});
}
});
}
Terminal Answer
我控制台记录 body.pw 和 results.pw 但似乎它给了我相同的字符串但是
我不确定为什么即使 body.pw 和 results.pw
的字符串相同,它也会给我错误的结果
compareSync 将密码与哈希值进行比较。在将密码与 plain-text 密码进行比较之前,您首先需要对密码进行哈希处理。
第一个运行
bcrypt.hash(myPlaintextPassword, saltRounds).then(function(hash) {
// Store hash in your password DB.
});
那你可以比较一下
bcrypt.compare(myPlaintextPassword, hash).then(function(result) {
// result == true
});
我正在尝试实现登录功能 当我像这样创建登录功能时
login: (req,res) => {
const body = req.body;
getUserByEmail(body.email,(err,results)=>{
if(err){
console.log(err);
}
if(!results){
return res.json({
sucess: 0,
data: "Invalid email or password 1"
});
}
console.log(body.pw);
console.log(results.pw);
const result = compareSync(body.pw,results.pw);
console.log(result)
if(result){
results.pw = undefined;
const jsontoken = sign({result: results},"1234413",{
expiresIn: "1h"
});
return res.json({
sucess: 1,
message: "login sucessfully",
token: jsontoken
});
}else{
return res.json({
sucess: 0,
data: "Invalid email or password2"
});
}
});
}
Terminal Answer
我控制台记录 body.pw 和 results.pw 但似乎它给了我相同的字符串但是 我不确定为什么即使 body.pw 和 results.pw
的字符串相同,它也会给我错误的结果compareSync 将密码与哈希值进行比较。在将密码与 plain-text 密码进行比较之前,您首先需要对密码进行哈希处理。
第一个运行
bcrypt.hash(myPlaintextPassword, saltRounds).then(function(hash) {
// Store hash in your password DB.
});
那你可以比较一下
bcrypt.compare(myPlaintextPassword, hash).then(function(result) {
// result == true
});