セッションストレージにRedisを使ったときのセッション有効期限について

554 views
Skip to first unread message

とおる

unread,
Dec 16, 2016, 4:32:03 AM12/16/16
to fuelphp.jp
お世話になります。

アプリケーションサーバを冗長化したときとか、
セッションストレージにRedisを使うことがあると思うのですが、
このときに fuel/app/config/session.php で

> ‘expire_on_close’ => true,

にして、ブラウザを立ち上げっぱなしで、2時間以上放置したあとに
セッションのデータが消えてしまうということがありました。

よくよく調べてみると fuel/core の Session_Redis クラス (classes/session/redis.php)
でRedisにデータを書き込むときに、expire() をしてredis上での有効期限を設定しているようです。
このとき設定される有効期限は config/session.php の ‘expiration_time' の値のようです。
そのため、expiration_time の初期値 7200sec(2時間) で redis 上からセッションデータが消えてしまった
ため、冒頭のように2時間以上放置したあとにセッションデータが消えたようです。

今回は expiration_time を12時間に延長して対応しましたが、 ‘expire_on_close’ が true だったときは
redis側の有効期限を設定しないようにするとかがいいんじゃないかと思ったのですが、
みなさまはどのようにお考えでしょうか?


とおる
toru...@gmail.com
http://tamulab.jp/
http://code.ttsoft.jp/
https://github.com/torut

Takagiwa Shun

unread,
Dec 16, 2016, 4:40:30 AM12/16/16
to fuelp...@googlegroups.com
お世話になっております&初めまして
たかぎわ (@shun_tak) と申します。

セッションハイジャック等のリスクを考えますと、有効期限はあったほうが良いかと思われます。
もしビジネス上の理由がありセッションを維持したい場合、
フロントエンドアプリのバックグラウンドで定期的にセッションを作り直すなどするのが良いと思います。

あくまで個人の意見ということで…
たかぎわ


2016年12月16日 18:31 とおる <toru...@gmail.com>:
--
このメールは Google グループのグループ「fuelphp.jp」の登録者に送られています。
このグループから退会し、グループからのメールの配信を停止するには fuelphp_jp+unsubscribe@googlegroups.com にメールを送信してください。
その他のオプションについては、https://groups.google.com/d/optout にアクセスしてください。

Reply all
Reply to author
Forward
0 new messages