redis-rails
redis-store/redis-rails
セッションの管理方法をクッキーストアではなく、radisで管理する。
使い方
Gemfileに'redis-rails'を追加する。
gem 'redis-rails'
config/environments/production.rb
へ下記のような追記をします。
config.cache_store = :redis_store, "redis://localhost:6379/0/cache", { expires_in: 90.minutes }
以下をconfig/initializers/session_store.rb
に追加して、Redisをセッションストアとして使用します
MyApplication::Application.config.session_store :redis_store, servers: ["redis://localhost:6379/0/session"], expire_after: 90.minutes, key: "_#{Rails.application.class.parent_name.downcase}_session", threadsafe: true, signed: true, secure: true
これらのオプションについて
・servers
は、データの検索を試みるRedisサーバーの配列です。これは、:redis_storeと同じ構文を使用します
・expire_after
は、セッションキーのデフォルトTTLです。これは、セッションストアによって生成されたすべてのCookieの有効期限としても設定されます。
・key
はクライアント側のCookieの名前です
・threadsafe
は、複数のインスタンスで実行されるアプリケーション用です。セッションデータのグローバルミューテックスロックを無効にする場合は、これをfalseに設定します。デフォルトではtrueです。つまり、ミューテックスが有効になります。
・signed
は、署名/暗号化されたCookieを使用してクライアントセッションにローカルセッションを保存し、悪意のあるユーザーがそのコンテンツを改ざんするのを防ぎます。
・secure
は、HTTP Cookieが安全な(HTTPS)接続でサーバーからクライアントに転送されるようにします。
・httponly
は、すべてのCookieのHttpOnlyフラグがtrueに設定されていることを確認します。