簡體   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