Ruby on rails Rails ActiveRecord会话存储在HTML5会话存储中,而不是Cookie
我的应用程序要求用户在浏览器的不同选项卡中登录到不同的帐户(我们专门针对Chrome)。因为Rails使用Cookie存储会话信息,所以当用户登录时,他们会登录到浏览器中的所有选项卡。我使用的是ActiveRecord会话存储方法,但即使会话的ID也保存为cookie 使用HTML5的会话存储机制似乎有一个解决方案,它的范围仅限于用户登录的选项卡或窗口。似乎我所要做的就是直接让Rails将会话信息保存到会话存储中,而不是cookie中。但我根本找不到这方面的信息Ruby on rails Rails ActiveRecord会话存储在HTML5会话存储中,而不是Cookie,ruby-on-rails,html,session,activerecord,session-storage,Ruby On Rails,Html,Session,Activerecord,Session Storage,我的应用程序要求用户在浏览器的不同选项卡中登录到不同的帐户(我们专门针对Chrome)。因为Rails使用Cookie存储会话信息,所以当用户登录时,他们会登录到浏览器中的所有选项卡。我使用的是ActiveRecord会话存储方法,但即使会话的ID也保存为cookie 使用HTML5的会话存储机制似乎有一个解决方案,它的范围仅限于用户登录的选项卡或窗口。似乎我所要做的就是直接让Rails将会话信息保存到会话存储中,而不是cookie中。但我根本找不到这方面的信息 假设无法在Rails中配置会话存
假设无法在Rails中配置会话存储来执行此操作,是否可以覆盖ActiveRecord会话保存机制?关于在何处查找有关如何执行此操作的信息的任何指针?您现在可以通过初始化器配置基于Cookie的会话存储,可能在config/initializers/session_store.rb中。在Rails 3中,会话存储是一个中间件,配置选项通过对config.session\u存储的单个调用传入: 您的::Application.config.session\u存储:cookie\u存储,:key=>“\u 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
}
与Cookie不同,sessionStorage条目不能使用响应头创建,并且不会自动包含在请求头中。这就为管理基于客户端Javascript的会话存储/本地存储身份验证带来了大量工作负载。所有经过身份验证的访问都必须通过显式包含身份验证令牌的Javascript XHR请求 如果您希望用户能够有多个并发会话,并且您不希望将您的站点构建为一个并发会话,那么您必须采用另一种方法使用cookie 一种方法是使用多个域强制cookie进入单独的子空间。设置通配符DNS记录,并将web服务器配置为接受所有匹配请求,而不考虑前缀。例如,默认情况下,用户可能位于
www.yoursite.com
。您将提供一个“创建新会话”链接,打开一个随机子域的新选项卡,例如1234abcd.www.yoursite.com
。但是,如果您使用SSL,这可能会产生问题;通配符SSL证书往往要昂贵得多
一个更简单的方法是让用户了解他们浏览器的私有/图标模式,这些模式维护独立的cookie存储。但是,让用户阅读文档始终是一项挑战。我在这里配置会话存储并使用ActiveRecord会话存储。我如何将其保存在HTML5会话存储中,而不是保存在cookie中?您找到这个问题的答案了吗?