8

我有一个围绕会话的非唯一问题(其他人一定已经解决了这个问题)。

场景是我有 5 个顶级域(domain_a、domain_b、domain_c、domain_d、domain_e)和每个下的多个子域。我的应用程序需要在同一顶级域中的子域之间共享会话,例如 sub_1.domain_b.com 和 sub2.domain_b.com 可以共享,但 sub_3.domain_c.com 将是不同的会话。更复杂的是,如果域 a 和 b 和 c 和 d 也能够共享会话,那将是理想的。

所以规则:

  • domain_a 与 domain_b 以及其中的所有子域共享会话。很高兴能在 cookie_store 中

  • domain_c 与 domain_d 以及其中的所有子域共享会话。很高兴能在 cookie_store 中

  • domain_e 仅在其子域内共享其会话。这需要在 active_record_store 中

我怎样才能使这项工作?

我尝试使用以下内容创建初始化程序:

MyApp::Application.config.session_store :cookie_store, :key => '_domain_a', :domain => '.domain_a.com'

MyApp::Application.config.session_store :cookie_store, :key => '_domain_b', :domain => '.domain_b.com'

MyApp::Application.config.session_store :cookie_store, :key => '_domain_c', :domain => '.domain_c.com'

MyApp::Application.config.session_store :cookie_store, :key => '_domain_d', :domain => '.domain_d.com'

MyApp::Application.config.session_store :active_record_store, :key => '_domain_e', :domain => '.domain_e.com'

但是我不确定这是否有效。domain_e.com 会话有效,这是有道理的,因为它是最后一个声明,有什么想法吗?

4

1 回答 1

5

请参阅:Rails 3 session_store domain :all 到底做了什么? 选择的答案可能可以帮助您允许子域之间的公共会话和顶级域之间的单独会话。要使相同的会话在不同的顶级域中有效,要棘手得多,但也许这个问题可以帮助您转发:Rails - Multiple top level domain and a single session/cookie

于 2013-01-17T12:22:52.453 回答