bcrypt 密码匹配总是返回 false

发布于 2022-09-11 23:54:02 字数 1283 浏览 13 评论 0

用户注册可以保存成功,但是,使用在登录中,密码匹配这里,总是返回 false ,不知道该怎么解决了,求指点:
//login
`

router.post('/login', (req, res) => {
const userEmail = req.body.userEmail;
const userPassword = req.body.userPassword;

UserModel.findOne({ userEmail }).then(user => {
    // console.log(user.userPassword == userPassword);
    if (!user) {
        return res.status(404).json({ userEmail: '用户不存在!' });
    };

    // bcrypt 验证密码
    // userPassword  是当前传回来的值
    // user.userPasswor 是数据库中的值
    // 经过测试,它们是一样的
    bcrypt.compare(userPassword, user.userPassword).then(isMatch => {
        console.log(isMatch);
        //每次到这里一步时 isMatch 总是返回 false
        if (isMatch) {
            //登录成功,返回 token,token 的使用规则为:jwt.sign("规则","加密名称","过期时间","箭头函数")
            const rule = {
                id: user._id,
                name: user.userName
            };

            jwt.sign(rule, Key.secretName, { expiresIn: 3600 }, (err, token) => {
                if (err) throw err;
                res.json({
                    sucess: true,
                    token: "Bearer " + token
                });
            })
        } else {
            return res.status(400).json({ userPassword: "密码错误" });
            }
        })
    })
});

`
求指点,都好几天了,一直卡在这里。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

傻比既视感 2022-09-18 23:54:02

node --inspect app.js开启调试模式,打开chrome浏览器,打下断点,先看入参userPassword, user.userPassword两者是否一致,如果不一致,在单步调试一步一步走进compare方法里面,看下是哪一步出错。

空‖城人不在 2022-09-18 23:54:02

你好,我最近也遇到这个问题了,请问你解决了吗?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文