2017-04-04 25 views
0

私はExpress JSアプリケーションでミドルウェア機能を実装しようとしていますが、これは単純なMVCアーキテクチャに従います。Express js:ミドルウェア機能が呼び出されていません

routes.jsrouteの下のフォルダ

//load the controller auth.js 
var auth = require('../controllers/auth'); 
//auth route 
router.route('/auth').get(auth.simpleAuth); 

auth.js

//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フォルダcontrollers下のエラーメッセージがありません

module.exports={ 
    testMiddleware:function (req,res,next) { 
     console.log('inside middleware'); 
     if(req.username == true){ 
      next(); 
     }else{ 
      console.log('auth failed') 
     } 

    } 
} 

フォルダmiddlewareの下にあります私がauthにアクセスすると、ミドルウェア機能は呼び出されません。

+0

expressjsミドルウェアhttps://expressjs.com/en/guide/using-middlewareを見てください。 html –

答えて

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"}); 
    } 
} 
+1

whats 'all 'の意味 – Jabaa

+1

つまり、すべてのタイプのhttp要求'GET'、' POST'はミドルウェアを通過します。 –

+0

これはすべてのHTTP動詞に一致します –

関連する問題