私の Rails アプリには、"remember me" チェックボックスのあるサインイン ボックスがあります。このチェックボックスをオンにしたユーザーは、ブラウザを閉じた後もログインしたままにする必要があります。ユーザーのセッションにIDを保存することで、ユーザーがログインしているかどうかを追跡しています。
ただし、セッションはセッション Cookie として Rails に実装されており、永続的ではありません。それらを永続的にすることができます:
class ApplicationController < ActionController::Base
before_filter :update_session_expiration_date
private
def update_session_expiration_date
options = ActionController::Base.session_options
unless options[:session_expires]
options[:session_expires] = 1.year.from_now
end
end
end
しかし、これはハックのように思えます。これは、このような一般的な機能には驚くべきことです。もっと良い方法はありますか?
編集
Gareth の回答はかなり良いですが、Rails 2 に精通している方からの回答をお待ちしています (ユニークなためCookieSessionStore
)。