我试图通过调用中间件内的 next() 来访问路由处理程序,但 next() 正在执行之后的日志,并且没有调用路由处理程序。
const verifyToken = (req, res, next) => {
try {
console.log('Hello')
const token = req.cookies.token
if (!token) {
console.log('Unauthorized. No Token Available.')
return res.status(401).json({
success: false,
message: 'Unauthorized. No Token Available'
})
}
const decoded = jwt.verify(token, process.env.JWTSECRET)
console.log(decoded)
req.user = decoded
console.log(decoded)
next()
console.log('sdfkjslfas')
} catch (err) {
if (err.name === 'JsonWebTokenError' || err.name === 'TokenExpiredError') {
return res.status(401).json({
success: false,
message: 'Unauthorized. Invalid Token'
})
}
res.status(500).json({
success: false,
message: 'Server failure. Try again later!!!!!'
})
}
}
我尝试了一切,但找不到我陷入困境的地方。日志似乎在整个 verifyToken 中间件上运行,但后续的路由处理程序没有被执行。
next
只是一个函数。返回后,其余代码将执行。
如果这是终端中间件句柄(很可能是),您可能需要使用
return next()
。