web-dev-qa-db-ja.com

Expressを使用したリクエストヘッダーの認証

すべてのgetリクエストの認証ヘッダーに特定のトークンが含まれていることを確認したいと思います。

これをgetエンドポイントに追加できます。

app.get('/events/country', function(req, res) {
    if (!req.headers.authorization) {
    return res.json({ error: 'No credentials sent!' });
    }

すべてのエンドポイントを変更せずにNodeJS/Expressでこれを処理するより良い方法はありますか?前フィルター/ AOPアプローチのようなものですか?

12
kambi

それが ミドルウェア の目的です:

app.use(function(req, res, next) {
  if (!req.headers.authorization) {
    return res.status(403).json({ error: 'No credentials sent!' });
  }
  next();
});

...all your protected routes...

ミドルウェアが適用されるルートの前に、ミドルウェアが宣言されていることを確認してください。

35
robertklep