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