我是 Ruby/Rails 的新手,我对 Rails 中的会话机制以及整个会话有一些疑问。
- 我读过 Rails 4 中的会话机制使用 cookie 作为默认存储。这是真的吗?
- 据我所知,关闭浏览器后会话会被销毁。我可以手动更改到期时间吗?
提前致谢。
我是 Ruby/Rails 的新手,我对 Rails 中的会话机制以及整个会话有一些疑问。
提前致谢。
是的,会话默认存储在 cookie 中。如果你往下看,config/initializers/
你会发现一个session_store.rb
包含以下内容的文件。
Appname::Application.config.session_store :cookie_store, key: '_appname_session'
至于覆盖此行为,您可以创建自定义 cookie 并将其到期日期设置为您想要的时间。通常这就是创建身份验证时处理用户会话的方式。例如:
def sign_in(user)
cookies[:session_token] = { value: user.session_token, expires: 1.day.from_now }
self.current_user = user
end
然后,您使用该 cookie 来保持用户会话。
expire_after
您可以在初始化程序中使用设置超时
My::Application.config.session_store :active_record_store, {
key: "session_id",
domain: "domain.com",
expire_after: 12.hours,
}
这两个东西都可以设置在config/initializers/session_store.rb
. 例如:
MyApp::Application.config.session_store :cookie_store,
:key => '_my_app_session',
:expire_after => 30.minutes