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()
})