我有一个非独特的(其他人必须解决这个问题)围绕会话的问题。
场景是我有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可以是不同的会话。为了使问题更复杂,如果域名为&乐队夏令营; 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会话有效,这有意义,因为它是最后一个声明,任何想法?
答案 0 :(得分:5)
请参阅:What does Rails 3 session_store domain :all really do? 选定的答案可能可以帮助您允许子域之间的常见会话和顶级域之间的单独会话。要使相同的会话在不同的顶级域名中有效,要复杂得多,但也许这个问题可以帮助您转发:Rails - Multiple top level domains and a single session/cookie