ActiveRecordStore を用いた Rails(2.3.11) のセッションの有効期限を設定する

Pocket
LINEで送る

この記事の所要時間: 238

ActiveRecordStore を用いたセッションの有効期限の指定の仕方がなかなか載ってなかったので苦戦しました。ActiveRecordStore を用いた場合のセッション有効期限の設定の仕方は以下のようになります。

config/initializers/session_store.rb を編集

以下のモデル定義とクッキーの有効期間を追加します。クッキーの有効期限は 10 年後に指定しています。

[code lang=”ruby”]
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
[/code]

app/controllers/application_controller.rb を編集

application_controller.rb に以下のようなメソッド定義を追加します。

[code lang=”ruby”]
class ApplicationController < ActionController::Base
# フィルタ
before_filter :reset_session_expires

protected

# 1週間でセッションが切れるように設定
def reset_session_expires
Session.sweep(‘7d’)
end
end
[/code]

これでおしまい!

参考

投稿者紹介

株式会社ユニキャスト
私たちは、テクノロジに魅せられた個性あふれるメンバーによって構成された茨城県日立市に本社を構えるベンチャー企業です。
”テクノロジを通して「驚き」と「感動」を創造し、人々の「夢」と「笑顔」を支えます。” の経営理念をモットーに明るい未来を描き、ワクワクする企画提案を続けて参ります。

人気の記事

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

PAGE TOP

%d人のブロガーが「いいね」をつけました。