我 x.com指向apple.y.com ,另外 one.y.com 和 two.y.com 。我希望访问x.com,one.y.com或two.y.com的用户共享相同的会话。这可能吗?如果没有,最好的妥协是什么?
答案 0 :(得分:1)
one.y.com
和two.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"
}