ActiveRecordStore を用いたセッションの有効期限の指定の仕方がなかなか載ってなかったので苦戦しました。ActiveRecordStore を用いた場合のセッション有効期限の設定の仕方は以下のようになります。
config/initializers/session_store.rb を編集
以下のモデル定義とクッキーの有効期間を追加します。クッキーの有効期限は 10 年後に指定しています。
ActionController::Base.session = {
:key => '_sample_session',
:secret => 'xxxxx',
:expires => 10.years.from_now
}
...
class Session < ActiveRecord::Base
def self.sweep(time_ago = nil)
time = case time_ago
when /^(\d+)m$/ then Time.now - $1.to_i.minute
when /^(\d+)h$/ then Time.now - $1.to_i.hour
when /^(\d+)d$/ then Time.now - $1.to_i.day
else Time.now - 1.hour
end
self.delete_all "updated_at < '#{time.to_s(:db)}'"
end
end
app/controllers/application_controller.rb を編集
application_controller.rb
に以下のようなメソッド定義を追加します。
class ApplicationController < ActionController::Base
# フィルタ
before_filter :reset_session_expires
protected
# 1週間でセッションが切れるように設定
def reset_session_expires
Session.sweep('7d')
end
end
これでおしまい!
参考
- Ruby on Rails Guides: Ruby On Rails Security Guide
- Ruby On Rails Security Guideの訳 : 2.Sessions 2.9 | FLATzブログ Ruby on Rails|ECサイト構築の株式会社フラッツ
投稿者紹介
-
私たちは、テクノロジに魅せられた個性あふれるメンバーによって構成された茨城県日立市に本社を構えるベンチャー企業です。
”テクノロジを通して「驚き」と「感動」を創造し、人々の「夢」と「笑顔」を支えます。” の経営理念をモットーに明るい未来を描き、ワクワクする企画提案を続けて参ります。
最近のエントリ
- レポート2019.10.28ユニキャストレストランを開催しました🍳
- レポート2019.08.29社内研修ワークショップ~マシュマロ・チャレンジ~
- レポート2019.08.06Computex/InnoVEX 出展者・通訳として参加してきました。
- レポート2018.06.12Computex 2018 レポート