如何解决Bcrypt 无法工作,Bcrypt.compareSync 总是返回 false
我面临的问题是,当代码在其他计算机上使用时,bcrypt.comparesync 可以返回true。但是,无论被比较的文本是相同还是不同,它在我的计算机上总是返回 false。这是我面临的某种错误吗,因为我的代码过去曾经可以工作但突然停止工作。为什么会这样?
我的代码:
const bCrypt = require('bcrypt');
var WebToken = require('jsonwebtoken');
var SecretKey = "Somesecretkey";
class ProfilesDB
{
getLoginCredentials(request,respond){
var username = request.body.username;
var password = request.body.password;
var sql = "SELECT password FROM restaurant_review.profile WHERE username = ?";
var profileValues = [username,password];
db.query(sql,profileValues,function(error,result)
{
if(error)
{
throw error;
}
else
{
//console.log(result[0].password);
const hash = result[0].password;
var flag = bCrypt.compareSync(profileValues[1],hash);
if (flag)
{
var token = WebToken.sign(username,SecretKey);
respond.json({result:token});
}
else
{
respond.json({result:"Invaild"});
}
}
});
}
getAllProfiles(request,respond)
{
var sql = "SELECT * FROM restaurant_review.profile";
db.query(sql,results){
if(error)
{
throw error;
}
else
{
respond.json(results);
}
});
}
addProfile(request,respond)
{
//Creating a new profile class,calls for a new profile,to create a new "profile"
var profileObject = new Profile(null,request.body.firstName,request.body.lastName,request.body.username,request.body.password,request.body.email);
//To encrypt the password
profileObject.password = bCrypt.hashSync(profileObject.password,10);
//Question mark is used as a place holder.
var sql = "INSERT INTO restaurant_review.profile (firstName,lastName,username,password,email) Values(?,?,?)";
var profileValues = [profileObject.getFirstName(),profileObject.getLastName(),profileObject.getUsername(),profileObject.getpassword(),profileObject.getEmail()];
db.query(sql,result){
if(error)
{
throw error;
}
else
{
respond.json(result);
}
});
}
解决方法
如果它适用于其他计算机而不是您的计算机,那么它可能来自 bcrypt 包以外的其他东西,例如,数据库未配置属性等。也许您的数据库表中的密码字段对字符数和散列密码超过这个数字?检查表中密码字段的类型,并确保它不是类似 varchar(x) 的 x 值较小的内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。