JWT-TypeError: Cannot read property 'id' of undefined
JWT-TypeError: Cannot read property 'id' of undefined
你好,我正在创建令牌验证 (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
。所以在 if(err)
中发出 return
否则代码将继续,调用 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()
})
你好,我正在创建令牌验证 (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
。所以在 if(err)
中发出 return
否则代码将继续,调用 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()
})