【问题标题】:Express: await bcrypt.compare returns falseExpress:await bcrypt.compare 返回 false
【发布时间】:2022-10-23 02:15:54
【问题描述】:

我正在尝试实现登录方法,通过他/她的email 灼烧用户,然后检查password 验证。 所以,如果电子邮件无效,然后抛出无效的电子邮件响应和密码,我也在做同样的事情,但是当我比较 candidatePassword 和用户存储的密码时,bycrpt.compare 给了我一个错误。我也检查了数据库(MongoDB) 的密码,它也尝试将密码和hashedPassword 打印到控制台以查看我正在获取数据并打印它是正确的。因此,得出的结论是bcrypt.compare 方法存在一些错误。 如果我散列错误或我检查密码的方法错误,你们能帮我吗? 任何帮助表示赞赏。

用户模型:

userSchema.methods.correctPassword = async (candidatePassword, userPassword) => {
    console.log(candidatePassword, "user=>", userPassword)
    return await bcrypt.compare(candidatePassword, userPassword);
};
export const user = mongoose.model('user', userSchema);

登录文件:

export const loginUser = async (req, res, next) => {
    try {
        const { email, passcode } = req.body;

        // 1) Check if email and password is empty
        if (!email || !passcode)
            return res.status(400).send('Please provide email and password!');

        // 2) Check if user exists && password is correct
        const user = await UserModule.findOne({ email }).select('+passcode');
    console.log("user=>", passcode, "\n", "hashed=>", user.passcode, "\n", await user.correctPassword(passcode, user.passcode))

        if (!user || !(await user.correctPassword(passcode, user.passcode))) 
            return res.send("Email or Password is invalid.")

        res.send(message: "Logged in Successfully");
    }
    catch (err) {
        res.send(err.message)
    }
}

输出

user=> vandor1passcode
hashed=> $2b$12$LdpTufKRc2qXiWh2YOfNUO9f4QnNI/jfT4Hq9/.GJ2O7cTWjFugoy 
false

【问题讨论】:

  • 检查passcode 请求中的任何额外空格。
  • 是的,我检查并没有,没有额外的空间被散列,因为如果有的话,我会修剪第一个和最后一个额外的空间。
  • 您的数据库中的电子邮件是唯一的吗?
  • 是的,电子邮件和 ID 都是唯一的
  • 尝试删除现有文档,插入新数据并立即尝试

标签: node.js mongodb express mongoose bcrypt


【解决方案1】:

所以,我找到了这个问题的答案。 基本上,我的散列密码使用大小为 12 的盐正确散列,当我将其与我现有的存储密码进行比较时,它与大小为 10 的盐进行比较。这就是为什么我得到错误结果的问题,即使我的密码正确。

【讨论】:

    猜你喜欢
    • 2019-12-08
    • 1970-01-01
    • 2021-11-15
    • 2019-05-05
    • 2019-05-27
    • 2021-09-29
    • 1970-01-01
    • 2014-05-30
    相关资源
    最近更新 更多