サイトの一部へのアクセスを防止する認証ミドルウェアを追加しようとしています。
app = express()
.get('/api/test', function (req, res) { ... })
.use('/api', function (req, res, next) {
if (req.param('key')) {
next();
} else {
res.json(401, {
message : 'Authentication failed'
});
res.end();
}
})
.get('/api/data', function (req, res) { ... });
また、/api/data への呼び出しは、最初にキー チェッカーによって処理され、(成功した場合) /api/data ハンドラーによって処理されると予想しています。ただし、代わりに「/api/data」によって最初に処理されるリクエスト。
チェッカーは /api/something_that_does_not_exist では機能するようですが、/api/something_that_exist では機能しないようです。
Express/Connect のドキュメントで何かを見逃したのではないでしょうか?
更新最初の get/post 呼び出しがルーター ミドルウェアを初期化するため、最初に実行されるという事実までこれを追跡しました。