我正在尝试在我的快速js应用程序中实现中间件函数,它遵循一个简单的MVC架构。
routes.js
文件夹下的 route
//load the controller auth.js
var auth = require('../controllers/auth');
//auth route
router.route('/auth').get(auth.simpleAuth);
auth.js
文件夹下的 controllers
//load the middleware
var middleware = require('../middleware/middleware');
module.exports={
simpleAuth:function (req,res) {
//invoke middleware
middleware.testMiddleware;
res.send('middleware test completed');
}
}
middleware.js
文件夹下的 middleware
module.exports={
testMiddleware:function (req,res,next) {
console.log('inside middleware');
if(req.username == true){
next();
}else{
console.log('auth failed')
}
}
}
没有显示错误消息但是当我访问auth
路由时,不会调用中间件函数。
答案 0 :(得分:1)
您没有正确调用它。尝试从路线呼叫它。
<强> routes.js 强>
var middleware = require('../middleware/middleware');
router.route('/auth').all(middleware.testMiddleware).get(auth.simpleAuth);
<强> middleware.js 强>
testMiddleware: function (req,res,next) {
console.log('inside middleware');
if(req.username == true) {
next();
} else {
// error
return res.status(401).json({ "message" : "auth failed"});
}
}