Rails ActiveRecord会话存储在HTML5 SessionStorage而不是Cookie中

Aar*_*egh 11 session html5 activerecord ruby-on-rails session-storage

我的应用程序要求用户在浏览器的不同标签中登录不同的帐户(我们专门针对Chrome).由于Rails使用cookie来存储会话信息,因此当用户登录时,他们将登录浏览器中的所有选项卡.我正在使用ActiveRecord会话存储方法,但即使会话的ID也保存为cookie.

似乎有一个使用HTML5的sessionStorage机制的解决方案,该机制的范围仅限于用户登录的选项卡或窗口.我似乎只需要将会话信息保存到sessionStorage而不是cookie中.但我根本找不到任何相关信息.

假设无法在Rails中配置会话存储来执行此操作,是否可以覆盖ActiveRecord会话保存机制?有关如何查找有关如何进行此操作的信息的指示?

Sar*_*mAr -1

现在,您可以通过初始化程序(可能位于config/initializers/session_store.rb中)配置基于 Cookie 的会话存储。在 Rails 3 中,会话存储是一个中间件,配置选项通过一次调用 config.session_store 传入:

您的::Application.config.session_store :cookie_store, :key => '_session'

您可以使用 :key 将任何您想要的额外选项放入哈希中,例如

Your::Application.config.session_store :cookie_store, {
  :key =>           '_session_id',
  :path =>          '/',
  :domain =>        nil,
  :expire_after =>  nil,
  :secure =>        false,
  :httponly =>      true,
  :cookie_only =>   true
}
Run Code Online (Sandbox Code Playgroud)