你好,我正在创建令牌验证(JWT),这里出现的错误是 JWT 签名令牌的代码:
if (user) {
const payload = user._id
console.log(payload)
console.log(process.env.SECRET)
const token = jwt.sign({id :payload}, process.env.SECRET, {
expiresIn: 10
})
console.log(token)
res.cookie('token', token, {
httpOnly: true
});
并验证它(在中间件中)
const token = req.body.token ||
req.query.token ||
req.headers['x-access-token'] ||
req.cookies.token;
if (!token) {
res.status(401).send({auth: false})
}
else{
jwt.verify(token, process.env.SECRET, function (err, decoded) {
if (err){
res.status(500).send({
message: err.message
})
}
req.userId = decoded.id
next()
})
}
我不知道这个问题,我想我按照文档做了所有的事情,但是如果有人知道这个问题的解决方案,这个错误仍然会出现,如果我听到它,我会很高兴,谢谢!
如果jwt.verify
失败,您正在尝试访问decoded.id
不存在的内容。所以发出一个return
insideif(err)
否则代码将继续,调用next
& 尝试访问decoded.id
,触发错误。
jwt.verify(token, process.env.SECRET, function(err, decoded) {
if (err) {
return res.status(500).send({
message: err.message
})
}
req.userId = decoded.id
next()
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句