JWT-TypeError: Невозможно прочитать свойство 'id' из неопределенного - PullRequest
0 голосов
/ 13 марта 2019

Привет! Я создаю проверку токена (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()
  })

}

Я не знаю проблемы, я думаю, что я сделал все в соответствии с документами, но эта ошибка все еще появляется, если кто-то знает решение этой проблемы, я был бы рад, если бы я услышал это спасибо!

1 Ответ

2 голосов
/ 13 марта 2019

Если jwt.verify не удается, вы пытаетесь получить доступ к decoded.id, который не существует. Поэтому введите return внутри if(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()
})
...