我的 Rails 应用程序有一个带有“记住我”复选框的登录框。选中该框的用户即使在关闭浏览器后仍应保持登录状态。我通过将用户的 id 存储在用户的会话中来跟踪用户是否登录。
但是会话在 Rails 中作为会话 cookie 实现,它不是持久的。我可以让他们坚持:
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
但这似乎是一种 hack,这对于这种常见的功能来说是令人惊讶的。有没有更好的办法?
编辑
Gareth 的回答非常好,但我仍然希望熟悉 Rails 2 的人回答(因为它是独一无二的CookieSessionStore
)。