ちなみに、Rack::Session::Redisについて調べてみると、このクラスを提供しているライブラリが2つ見つかります。rack-session-redis と redis-rack の2つですね。
redis-rackのほうが新しいです。ソースコードも読んでみましたが、redis-rackのほうがよく整理されている印象を受けました。redisにデータを保存するための抽象化レイヤが redis-store として分離されていて、redis-rackはその上に乗っている構造のようです。
ということで、redis-rackを導入します。以下、Padrinoフレームワークを使っている前提です。
Gemfileに以下の記述を加えます。
gem ‘redis-rack’
app/app.rbに以下の記述を加えます。
set :protection, false set :protect_from_csrf, false disable :sessions use Rack::Session::Redis, :expire_after => 30 * 24 * 60 * 60 use Rack::Protection use Rack::Protection::AuthenticityToken, :authenticity_param => '_csrf_token'
セッションに使うライブラリを変更するため disable :sessions とするのですが、:protection と :protect_from_csrf は enable:sessions を前提にしておりエラーになるため事前に falseに設定し、その後手動で該当するミドルウェアである Rack::Protection と Rack::Protection::AuthenticityToken を use します。
なお、Redisの接続先はRack::Session::Redisのデフォルトのオプションで
:redis_server => 'redis://127.0.0.1:6379/0/rack:session'
と定義されてます。特に変更の必要はないので今回はサーバを指定していません。オプションはセッションの有効期限だけを指定しています(上の例だと30日を秒数で指定)。
※この記事について指摘・意見・提案・感想などありましたら下のコメント欄にどうぞ。
0 件のコメント:
コメントを投稿