0

我是 Ruby/Rails 的新手,我对 Rails 中的会话机制以及整个会话有一些疑问。

  1. 我读过 Rails 4 中的会话机制使用 cookie 作为默认存储。这是真的吗?
  2. 据我所知,关闭浏览器后会话会被销毁。我可以手动更改到期时间吗?

提前致谢。

4

3 回答 3

3

是的,会话默认存储在 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 来保持用户会话。

于 2013-08-20T15:30:36.660 回答
1

expire_after您可以在初始化程序中使用设置超时

My::Application.config.session_store :active_record_store, {
  key: "session_id",
  domain: "domain.com",
  expire_after: 12.hours,
}
于 2013-08-20T15:32:52.377 回答
1
  1. 是的
  2. 是的

这两个东西都可以设置在config/initializers/session_store.rb. 例如:

MyApp::Application.config.session_store :cookie_store,
                                        :key => '_my_app_session',
                                        :expire_after => 30.minutes
于 2013-08-20T15:34:11.197 回答