[英]Route not executing after middleware
所以我正在创建一个身份验证路由,但在执行中间件后失败。
验证令牌.js
module.exports = function (req, res, next) {
const token = req.get('auth-token')
if (!token) return res.status(401).send('Access Denied!')
try {
const verified = jwt.verify(token, process.env.TOKEN_SECRET)
req.user = verified
console.log(req.user) // successfully logging
next()
} catch (err) {
res.setHeader('Content-Type', 'application/json');
res.status(403).send('Invalid Token')
}
}
用户控制器.js
exports.currentUser = verifyToken, async (req, res) => { // after verify token throwing an error 404
console.log('HIT') // not logging
// return res.send(req.user)
}
用户路由.js
const { currentUser } = require('../controllers/users');
router
.route('/currentuser')
.post(currentUser)
我尝试了您的代码,但也无法记录“HIT”。 我建议如下,将exports@exports.currentUser拆分成
var verifyToken = require('./verifyToken.js')
var response = async (req, res) => {
console.log('HIT') // not logging
// return res.send(req.user)
}
module.exports.currentUser = {verifyToken, response}
然后像这样重新编写 route.js 以使其工作。
const { currentUser } = require('./controller.js');
router.get('/currentUser', currentUser.verifyToken, currentUser.response)
要使用 next(),我必须使用 router.get('/get', middleware, callback)。 我更改了代码以便我可以测试它。 您将需要根据您的上下文编辑代码!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.