Express js:不调用中间件函数

时间:2017-04-04 05:27:57

标签: javascript node.js express middleware

我正在尝试在我的快速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路由时,不会调用中间件函数。

1 个答案:

答案 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"});
    }
}