繁体   English   中英

中间件后路由不执行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM