这是我如何散列并将我的密码存储在数据库中。使用节点j无法验证Express中的散列密码
NEWUSER功能
var salt = bcrypt.genSaltSync(10);
var hash = bcrypt.hashSync(password, salt);
var query="INSERT into user(email,firstname,lastname,logintime,gender,password) VALUES('"+email+"','"+firstname+"','"+lastname+"','"+logintime+"','"+gender+"','"+hash+"')";
这是我如何检索和检查,以验证
VALIDATE功能
var query = "SELECT password from user where email='" + email + "'";
connection.query(query,function(err,result){
if(err)
{
console.log("ERROR:"+err.message);
}
else
{
if(result.length!==0)
{
var hash=JSON.stringify(result[0].password); console.log(hash);
console.log(bcrypt.compareSync(password,hash));
if(bcrypt.compareSync(password, hash)) { callback(err, result); }
这始终显示错误,但如果我这样做是显示预期结果
var hash = bcrypt.hashSync("sacjap", 8);
//var hash=JSON.stringify(result[0].password);
console.log(hash);
console.log(bcrypt.compareSync(password,hash));
if(bcrypt.compareSync(password, hash))
{
callback(err, result);
}
所以问题是,每当我从数据库中得到的密码不起作用。 PLZ帮助
感谢您的帮助。是的,你是对的。所以我改变了我的代码: –
var hash = JSON.stringify(result [0] .password); \t \t \t \t console.log(hash); \t \t \t \t console.log(bcrypt.compareSync(password,hash)); \t \t \t \t如果(bcrypt.compareSync(密码,哈希值)) \t \t \t \t \t { \t \t \t \t回调(ERR,结果); \t \t \t \t \t} –
但crypt.compare显示错误,即使当我把正确的密码。有什么想法吗? –