Я установил jsonwebtoken
в node.js
и протестировал его с postman
. Сначала при входе в систему я генерирую токен, затем копирую его и использую для отправки запроса на защищенный маршрут. И jwt.verify
работает нормально, правильный userId
получен, но когда я вызываю next()
(см. Ниже), он переходит к обработчику ошибок 404
вместо index
, где расположены защищенные маршруты:
var index = require('./routes/index')
function verifyToken (req, res, next) {
// Get auth header value
const bearerHeader = req.headers['authorization']
// check if bearer is undefined
const message = 'Unauthorized user, access denied!'
if (typeof bearerHeader !== 'undefined') {
const bearerToken = bearerHeader.split(' ')[1]
jwt.verify(bearerToken, 'privateKey', (err, userData) => {
if (err) {
// Forbidden
console.log(err)
res.status(403).send({ err })
} else {
console.log(userData.userId)
req.userId = userData.userId
------> next()
}
})
} else {
// Forbidden
res.status(403).send({ message })
// res.sendStatus(403)
}
}
// app.use('/auth', index);
app.use('/auth', verifyToken, index)
Почему это происходит? Что я здесь не так делаю? По сути, моя цель - установить userId
для объекта req
, а затем вернуть его в корневой маршрут auth/
в index