Railsのセッションの有効期限を変更する

Railsでセッション有効期限を変更して、ログイン状態での最後のアクセスから1ヶ月間ログインを保持するやり方。

Railsでログイン状態を保持する方法 - おもしろWEBサービス開発日記
sessionに有効期限を設定する時の試練 - ザリガニが見ていた...。
これらの先人の記事に感謝しつつ参考にしてみる。

■dynamic_session_expプラグインのインストール

■セッションの有効期限を設定
config/environment.rb
CGI::Session.expire_after 1.month
※Rails::Initializer.run do |config|〜 end内に書くと、起動した際に
uninitialized constant CGI::Session (NameError)
というエラーが出るのでその外に書く。

■セッションの更新
セッションを更新しないと、セッションがつくられた日時(ログイン日時)から1ヶ月後になってしまい、「最後のアクセス(ログイン済) から1ヶ月間」ということにならないので、これを解決する。

application.rb
class ApplicationController < ActionController::Base
  before_filter :update_session
  unless session[:login].blank?
    def update_session
      session[:updated_at] = Time.now
    end
  end
end

ちなみにapplication.rbに
session :session_expires => 1.months.from_now
と書くとよさそうに思うが、これだとサーバが起動してから1ヶ月後に全てのセッションの有効期限が切れることになってしまう。
これは恐らく開発環境は毎日起動しなおしているので気づかない点。


posted by digital-squad at 2010年04月08日 14時29分 | Comment(0) | TrackBack(0) | Ruby on Rails / Ruby
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。