読者です 読者をやめる 読者になる 読者になる

Node.jsのExpress4系で、特定URLにBasic認証を掛ける方法

最近Node触ってます。 JavaScriptそこまでゴリゴリ書かないから勉強になるのと、 npmでごにょごにょ使いたいライブラリ組み込んだりするのが楽しくてやってます。

さて本題です。
基本前提expressで、サーバーが動いている前提です。

npm install basic-auth-connect

express4系から、いくつかのmoduleが外部に切りだされたので(詳しくはココ )自分でrequireしなくてはいけません。

特定のURL以下に対して、Basic認証をかけたい場合

ここでは、staff/*以下のURLに対してusernameとpasswordでBasic認証をかけている。

var port = process.env.PORT || 3000,
      basicAuth = require('basic-auth-connect');

//  ... (省略)

app.all('/staff/*', basicAuth(function(user, password) {
  return user === 'username' && password === 'password';
}));

// ... (省略)
server = http.createServer(app);
server.listen(port)

全てのURLに対してBasic認証をかけたい場合

// ... (省略)

app.use(basicAuth('username', 'password'));

// ... (省略)

個人で小さいアプリをつくろうとするとき、ユーザーからのリクエストがくるアプリと管理画面の機能を同居させるとき、気軽にやるには便利ですね。