gpt4 book ai didi

node.js - Node 的 bcrypt 比较返回假,虽然它是真的

转载 作者:行者123 更新时间:2023-12-05 02:04:49 26 4
gpt4 key购买 nike

这让我发疯。这是非常简单的代码:

user = new User(_.pick(userData, ['name', 'email', 'password']));
const salt = await bcrypt.genSalt(15);
user.password = await bcrypt.hash(user.password, salt);
const samePass = await bcrypt.compare(user.password, userData.password);

samePass 始终为假。我已经检查了样本请求密码和 https://bcrypt-generator.com 上的哈希值它确实显示它们匹配。 bcrypt 总是返回 false。并且你可以看到数据库与它无关。

示例数据(我在 samePass 行使用带有断点的 IDE 调试器):

user.password = $2b$10$nH2SGNZu9rdyz.V6qpT29eAhxKWfiOIr9ojOi96Ye2lQub.Pglof.
userData.password = oXmZ9pG5T4XtndH%#@A

最佳答案

user.password = await bcrypt.hash(user.password, salt); //This line is generating the password hash

比较时,您将第二个参数作为存储在数据库中的密码散列传递。但是,在您的代码中,您正在覆盖输入 user.password,其中包含需要比较的实际密码

const samePass = await bcrypt.compare(user.password, userData.password);

将其更改为:

let passwordHash = await bcrypt.hash(user.password, salt);
const booleanResult = await bcrypt.compare(userData.password, passwordHash);

关于node.js - Node 的 bcrypt 比较返回假,虽然它是真的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64044667/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com