Expressのgithubリポジトリには良い例があります。それらの1つは認証を扱い、ユーザーをreq.session
オブジェクトにアタッチする方法を示します。これはapp.post('/login')
ルート内で行われます。
特定のページへのアクセスを制限するには、それらのルートに単純なミドルウェアを追加します
function restrict(req, res, next) {
if (req.session.user) {
next();
} else {
req.session.error = 'Access denied!';
res.redirect('/login');
}
}
app.get('/restricted', restrict, function(req, res){
res.send('Wahoo! restricted area, click to <a href="/logout">logout</a>');
});
Brandonがすでに述べたように、本番環境ではMemoryStoreを使用しないでください。Redisは良い代替手段です。connect-redisを使用してデータベースにアクセスします。設定例は次のようになります
var RedisStore = require('connect-redis')(express);
// add this to your app.configure
app.use(express.session({
secret: "kqsdjfmlksdhfhzirzeoibrzecrbzuzefcuercazeafxzeokwdfzeijfxcerig",
store: new RedisStore({ host: 'localhost', port: 3000, client: redis })
}));