redis-rails

redis-store/redis-rails

セッションの管理方法をクッキーストアではなく、radisで管理する。

redis-store/redis-rails

使い方

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に設定されていることを確認します。