会话在Rails中的存储和到期

时间:2013-08-20 15:20:43

标签: ruby-on-rails ruby

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

  1. 我读过Rails 4中的会话机制使用cookie作为 默认商店。这是真的吗?
  2. 据我所知,会议被摧毁     关闭浏览器。我可以手动更改到期时间吗?
  3. 提前致谢。

3 个答案:

答案 0 :(得分: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来持久保存用户会话。

答案 1 :(得分:1)

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

My::Application.config.session_store :active_record_store, {
  key: "session_id",
  domain: "domain.com",
  expire_after: 12.hours,
}

答案 2 :(得分:1)

  1. 这两件事都可以在config/initializers/session_store.rb中设置。 E.g:

    MyApp::Application.config.session_store :cookie_store,
                                            :key => '_my_app_session',
                                            :expire_after => 30.minutes