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

时间:2019-05-03 00:09:18

标签: javascript node.js mongoose hash bcrypt

我在密码中使用bcrypt.hash,并且此哈希正常...但是当我将此哈希密码与猫鼬一起保存在mongodb中时,当对哈希密码进行哈希时,密码不一样。

示例:

密码哈希:$ 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,
},

当我比较时,密码始终不相等

1 个答案:

答案 0 :(得分:0)

发生此问题是因为我的用户模型具有带有bcrypt哈希的pre。(“保存”),并且与router.js中的bcrypt哈希冲突