ExpressJSでセッションを使う
セッション自体を使うのは簡単です。以下のコマンドでセッションを使えるプロジェクトが作成されます。
$ express --sessions project_name
ただし、他のオプション(--jshtmlなど)と同時に作成する際には、以下の様に、プロジェクト名を最初のオプションの後に書かないといけないようです。
$ express --sessions project_name --jshtml
以下ではproject_nameが無視されてしまいます。変な感じ。
$ express --sessions --jshtml project_name destination is not empty, continue?
既にプロジェクトを作成してある場合、app.configure部分に以下を追加します。
app.use(express.cookieParser('your secret here'));
app.use(express.session());
ここで注意しないといけないのが、app.use(app.router);よりも前に書かないと、req.sessionがundefinedになってしまうようです。
app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); + app.use(express.cookieParser('your secret here')); + app.use(express.session()); app.use(app.router); app.use(express.static(__dirname + '/public')); });
セッションデータ自体はメモリ上に格納されているようで、RedisやMongoDBなどに変更する事もできるようです。
しかし、以下の記事によると、オーバーヘッドが発生するため、それらを使わない方が良いとの事です。揮発してしまっては困るからMongoなどを使うわけですが、使わずに済むように設計しろ、という事なのでしょうかね。
Node.js パフォーマンス高速化の為の10個のヒント | Webエンジニアのメモ
Blazing fast node.js: 10 performance tips from LinkedIn Mobile | LinkedIn Engineering(原文)