Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

express4で特定のURLだけベーシック認証ページを実装してみる

らくらくパス付きページの代表格といえば、ベーシック認証。
全体に適用するだけなら、以前書いた記事の通りです。
shuzo-kino.hateblo.jp

今回は特定のURLだけベーシック認証ページを実装してみます。

実際のところ

導入

いつもの通り、npm。

$ npm i --save basic-auth-connect

ここでいう"connect"とは、expressのバックエンドまわりをやってくれる子です。
railsでいう、rackみたいなものなのだそうです。

スクリプト

通常のアプリに加えて、admin用のページを用意する場合を考えます。
メインのものにbasic-auth-connectを入れると全部対象になってしまうので
Router機能を使って分離します。
Routerについては、後日別途記事にします。

var express = require('express');
var app = express();
app.set('view engine', 'jade');

// 中略

// basicAuth for Admin Apps
var basicAuth = require('basic-auth-connect');
var adminApp  = express.Router();

adminApp.use(basicAuth('user', 'passw0rD'));

adminApp.get('/admin', function(req, res) {
    res.render('index', { title: 'Our Admin Apps!', message: "Welcome to the admin page"});
});

app.use('/', adminApp);

// Wake up the app
app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
});

adminApp以外のパスに接続しても、認証画面は出ません。
アプリを起動し/adminにアクセスすると、見慣れたベーシック認証の画面の後、"Welcome to the admin page"と出るはずです。
まぁ、これだと万全では無いので、外に出すツールなら色々細工はした方が良いでしょう。