綺麗に死ぬITエンジニア

Node.js + Express 4.xで、セッション管理にRedisを使う

2015-09-01

インターネット上には、Express 3.x系の情報ばかりで、苦労したので備忘録として。

前提

以下のバージョンを使用しています。

モジュール名バージョン
Node.js0.12.0
Express4.13.3
express-session1.11.3
connect-redis2.4.1

モジュールのインストール

あらかじめ必要なモジュールをインストールします。

cd /path/to/project-directory/
npm install express --save
npm install express-session --save
npm install connect-redis --save

最新版で本記事どおりうまく動かないなどの場合は、以下のようにバージョンを指定してインストールしてください。

cd /path/to/project-directory/
npm install express@4.13.3 --save
npm install express-session@1.11.3 --save
npm install connect-redis@2.4.1 --save

コード本文

Node.jsのコードを記述していきます。

var express = require('express');
var app = express();
var session = require('express-session');
var RedisStore = require('connect-redis')(session);

app.use(session({
  secret: 'secret',  // Secret Keyで暗号化し、改ざんを防ぐ
  resave: false,
  saveUninitialized: true,
  store: new RedisStore({  // Redisの設定
    host: '127.0.0.1',
    port: 6379,
    prefix: 'sid:'
  }),
  cookie: {
    path: '/'
  }
}));

/**
 \* あとは処理を記述していく
 \*/

app.get('/', function (req, res) {
  // 処理
});

app.listen(3000);

これで実装できます。

パターンさえ掴めば簡単ですが、うまくいかないことも多いので、一応成功例として。

これでもうまくいかない場合は、ミドルウェア(app.useの箇所)の記述順序を変えてみてください。他のミドルウェアが導入されている場合、記述の順番によっては動作しないことがあります。

まとめ

Node.jsたのしい。