【Node.js】Express-Sessionを使ってセッション管理

0

原田です。こんにちは。Node.jsでSession管理を実装するときにハマったのでまとめたいと思います。

Session管理の解説は他の方々がたくさん書いているので省略します。

環境は以下のとおりです。

環境
<br />
	CentOS 7.0<br />
	Node.js v6.11.3<br />
	npm : 3.10.10<br />


スポンサーリンク




準備

WorkSpaceを作成したら、以下のコマンドで必要なサードパーティをインストールします。


<br />
	$ sudo npm install express --save<br />
	$ sudo npm install express-session --save<br />
	$ sudo npm install connect-radis --save<br />

そして、radisというNoSQLのソフトウェアをインストールします。NoSQLはその名の通り、SQLを使わないDBのことです。
また、メモリ上にデータを持つため非常に高速なのが特徴みたいです。

インストールは、パッケージ管理が足りていなかったため、以下のコマンドでダウンロード、インストールします。

※要記載

redisをインストールすると、以下のコマンドでDBサーバーを立ち上げることができる。

redis-serverの実行
<br />
	$ redis-server<br />

特に指定がない場合、ホストが”127.0.0.1:6379″で実行される。これで準備完了である。

ソースコード

ソースコードはTypeScriptで書いています。

app.useのSessionで、storeオプションを書いています。ここに、redisを使うような書き方をしています。
そのようにすることで、ルートにアクセスしたさい、自動でredisにセッションパラメータが追加されます。

では、試しに実行してみます。

実行結果

見えにくいですが、connect.sidというものがcookieに追加されていました。また、redisの状態を以下のようにして確認してみました。

redisの確認
<br />
	$ redis-cli -h 127.0.0.1<br />
	&amp;amp;amp;amp;amp;gt; keys *<br />
	1) &amp;amp;amp;amp;amp;quot;dev.blog2El6FiOtFhhBkvOp53io-rVQUGHKnUkg&amp;amp;amp;amp;amp;quot;<br />
	&amp;amp;amp;amp;amp;gt; get dev.blog2El6FiOtFhhBkvOp53io-rVQUGHKnUkg<br />
	&amp;amp;amp;amp;amp;quot;{\&amp;amp;amp;amp;amp;quot;cookie\&amp;amp;amp;amp;amp;quot;:{\&amp;amp;amp;amp;amp;quot;originalMaxAge\&amp;amp;amp;amp;amp;quot;:null,\&amp;amp;amp;amp;amp;quot;expires\&amp;amp;amp;amp;amp;quot;:null,\&amp;amp;amp;amp;amp;quot;httpOnly\&amp;amp;amp;amp;amp;quot;:true,\&amp;amp;amp;amp;amp;quot;path\&amp;amp;amp;amp;amp;quot;:\&amp;amp;amp;amp;amp;quot;/\&amp;amp;amp;amp;amp;quot;}}&amp;amp;amp;amp;amp;quot;<br />

何かしらのkeyが追加されているのが分かりました。おそらく、ブラウザのconnect.sidを復元したものでしょう。

そのkeyをもとにgetすると、cookieの情報を得られました。ここに、ユーザー情報などをもたせることができれば、ログイン画面よくある値の保持ができるでしょうか。

終わりに

Node.jsでSession情報を保持する方法について解説しました。

はじめDBが必須と思っておらず、SessionIDってどうやって取るんだろうって思っていましたが、サードパーティがよろしくやってくれているみたいですね。
それがわからず数日ずっと悩んでいました。

もともとOAuthに関して調べていたのですが、おそらくこちらもそうなのでしょう。。。。


スポンサーリンク




コメントを残す