javascript Bcrypt哈希密码与Mongodb中保存的密码哈希不同

b5buobof  于 2023-05-16  发布在  Java
关注(0)|答案(2)|浏览(161)

我在密码中使用bcrypt.hash,这个hash正常。。但是当我用mongoose将这个哈希密码保存在mongodb中时,当我哈希密码时,这不是相同的passowrd。
示例:
密码哈希:$2b$10$bUY/7mrZd3rp1S7NwaZko.ShDFj47rAfdGHG1QcQxGdtvzaDd.WH2
mongo保存的密码:$2b$10$fOLYjjib7ycRbq7BqzNdMuPNbTPjMIVAZ1QQzBvX5cMEhi6rERjJK
我的注册用户代码:

req.body.password = await bcrypt.hash(req.body.password, 10);
    const user = await User.create(req.body);
    Logs.logRequest(item.path, { item });
    user.password = undefined;

    return res.status(201).send({
        user,
        token: await createToken(user),
});

我的登录用户代码:

const passOk = await bcrypt.compare(password, user.password);
    if (!passOk) {
    Logs.logError(item.path, {
        ...item,
        error: "Error",
});

我在用户方案中的密码:

password: {
    type: String,
    required: true,
    select: false,
},

我比较的时候,密码总是不相等

ldfqzlk8

ldfqzlk81#

出现问题的原因是我的User模型有一个pre.(“保存”)和bcrypt哈希,这与router.js中的bcrypt哈希冲突

mznpcxlj

mznpcxlj2#

这也发生在我身上原因是存储具有相同名称的函数。我删除了其余的,它对我很好。

相关问题