我的bcrypt比较有问题.我在注册页面上成功地散列了密码,但在登录页面上没有成功比较



这是我获得哈希密码的注册表单:

getAllUsers().then((res) => {
let user = res.data.find(
(u) => u.ugovor === ugovor 
);
if (user) {
setUser(user) {

bcrypt.genSalt(10, (err, salt)=> {
bcrypt.hash(user.password, salt, (err, hash) => {

postUser(user.id, hash, password, email).then((res) => {
user = res.data;
setPassword(prev => [...prev, hash]);
//loggedIn.password = hash;
setEmail(prev => [...prev, user]);
history("/login");
setError("");
console.log("uspesna registracija");
})
})
}) 
} else {
setError("Не постоји купац са унесеним бројем Уговора и мерила");
return 0;
}
});
}}>

这里是登录形式,一切都有效,但比较哈希密码,如果我比较输入的和哈希密码,直接比较也是错误的:

getAllUsers().then((res) => {

let user = res.data.find(

(u) => u.ugovor === ugovor 
);
const doesPasswordMatch = bcrypt.compareSync(password, user.password); 
if(!doesPasswordMatch) {
console.log('compare not success');
return 0;
}           else {

console.log('compare success')
}
if (user) {

setLogIn(true);
setUser(user);
history("/profile");
console.log("uspesno ulogovan");

} else {
setError("Broj Ugovora i lozinka se ne podudaraju");
}   
});
}}

我试着用wait进行比较,compareSync,甚至这个,但都不起作用,它无法识别散列密码:

bcrypt.compare(password, user.password, function(err, result) {
// result == true
});

登录时请尝试此操作。求你了,记得喂饱肚子。

getAllUsers().then((res) => {
// look for user
let user = res.data.find((u) => u.ugovor === ugovor);
if (user) {
// user is found
const hashedPassword = u.password; // get stored hashed password
// compare passwords
const doesPasswordMatch = bcrypt.compareSync(password, hashedPassword, (err, result) => {
if (err) console.log(err);
// result == true
});
if (doesPasswordMatch) {
// correct password
console.log("compare success");
setLogIn(true);
setUser(user);
history("/profile");
console.log("uspesno ulogovan");
} else {
// wrong password
console.log("compare not success");
return 0;
}
} else {
// user is not found
setError("Broj Ugovora i lozinka se ne podudaraju");
}

});

相关内容

  • 没有找到相关文章

最新更新