Estoy tratando de implementar la función de software intermedio en mi aplicación express js, sigue una arquitectura MVC simple.
routes.js
en la carpeta de route
//load the controller auth.js var auth = require('../controllers/auth'); //auth route router.route('/auth').get(auth.simpleAuth);
auth.js
en la carpeta de 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
en la carpeta de middleware
module.exports={ testMiddleware:function (req,res,next) { console.log('inside middleware'); if(req.username == true){ next(); }else{ console.log('auth failed') } } }
No se muestra ningún mensaje de error, pero cuando accedo a la ruta de auth
, no se invoca la función de middleware.
No lo estás invocando correctamente. Intenta llamarlo desde la ruta.
rutas.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"}); } }