我可以在指向同一个Rails应用程序的多个域之间共享cookie吗?

时间:2010-06-10 10:19:05

标签: ruby-on-rails cookies

x.com指向apple.y.com ,另外 one.y.com two.y.com 。我希望访问x.com,one.y.com或two.y.com的用户共享相同的会话。这可能吗?如果没有,最好的妥协是什么?

2 个答案:

答案 0 :(得分:1)

one.y.comtwo.y.com可以通过将Cookie域设置为.y.com来共享Cookie。这将在y.com的所有子域中共享Cookie。

但是,

x.com无法直接与y.com共享Cookie。有一个使用重定向的解决方案,但实现起来很棘手 - http://www.codeguru.com/csharp/csharp/cs_internet/article.php/c19417/Sharing-Cookies-Across-Domains.htm(示例在ASP.net中,但您可以将解决方案应用于RoR)。

答案 1 :(得分:0)

要使用使用相同会话cookie的同一域工作的应用程序,您可以在环境配置文件中配置它。我为我的一些应用程序执行此操作。这适用于Rails 2.3.5应用程序,它应该与Rails 3相同,但我不是正面的。

首先,在config/initializers/session_store.rb中,请确保:

# ActionController::Base.session_store = :active_record_store

被注释掉了。

接下来,所有应用程序都应使用相同的密钥和密码,在同一文件中设置:

ActionController::Base.session = {
  :key         => '_myapp_session',
  :secret      => 'some really long string of hex'
}

最后,配置环境文件以使用相同的域:

config/environments/development.rb

config.action_controller.session = { 
  :domain => ".rails.local" 
}

config/environments/production.rb

config.action_controller.session = { 
  :domain => ".myapp.com" 
}