gpt4 book ai didi

node.js - NodeJS 中使用 JWT 进行身份验证

转载 作者:太空宇宙 更新时间:2023-11-03 22:58:27 29 4
gpt4 key购买 nike

我正在尝试使用带有jwt的nodejs构建身份验证,并且我成功完成了将新用户注册到mongo数据库的注册过程,但我在登录时遇到问题,这是登录代码:

// Login
router.post('/log', (req, res) => {
User.findOne({ email: req.body.email }, { password: req.body.pass })
.exec()
.then(function(user) {
bcrypt.compare(req.body.pass, user.pass, (err, result) => {
if (err) {
return res.status(401).send('error');
}
if (result) {
const token = jwt.sign({
email: user.email,
_id: user._id
},
'secret',
{
expiresIn: '1h'
});
return res.status(200).json({
success: 'jwt',
token: token
});
}
return res.status(401).send('error happen');
});
})
.catch(err => {
res.status(401).send(err);
});
});

当我输入 postman/log 并在正文中输入以下结构时:

{
"email": "bb@bbbb.bbb",
"password": "12345",
}

我在 postman 中收到此消息作为回复:

error happen

当寄存器运行良好时,我无法理解代码有什么错误?

最佳答案

当您调用 User.findone 函数时,它会尝试查找具有给定电子邮件和未哈希密码的用户。

更改此行

User.findOne({ 电子邮件: req.body.email }, { 密码: req.body.pass })

这样:

User.findOne({ email: req.body.email })

因此您将能够获取用户并可以比较散列密码

关于node.js - NodeJS 中使用 JWT 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53784579/

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