【发布时间】:2010-10-07 02:19:50
【问题描述】:
在我的 rails 应用程序中,当我在 www.site.com 地址登录时,我登录得很好。虽然没有登出,但我去网站,http://site.com我已经登出,但如果我回去,仍然在www.site.com地址登录。
我找不到任何可以在我的环境变量中设置的内容,知道如何在我的域中的所有域中保持此会话吗?
【问题讨论】:
标签: ruby-on-rails session
在我的 rails 应用程序中,当我在 www.site.com 地址登录时,我登录得很好。虽然没有登出,但我去网站,http://site.com我已经登出,但如果我回去,仍然在www.site.com地址登录。
我找不到任何可以在我的环境变量中设置的内容,知道如何在我的域中的所有域中保持此会话吗?
【问题讨论】:
标签: ruby-on-rails session
正确设置会话cookie;也就是说,针对 .site.com 和 site.com 而不仅仅是针对 www.site.com。
【讨论】:
当您为“site.com”设置会话 cookie 时,它将不同于“www.site.com”。您需要将“cookie_domain”指定为“.site.com”,这将设置 cookie 或所有子域。在 PHP 中,您可以使用ini_set 或session_set_cookie_params 来设置session.cookie_domain。在 Rails 中,您可以向 enviroment.rb 添加一个小脚本 - 类似于:
ActionController::Base.session_options[:session_domain] = '.site.com'
(在这种情况下,您还可以根据生产/测试/开发环境中的域名进行一些切换)或尝试一些other configuration options。
subject 上的信息比您想知道的要多。
【讨论】:
您应该将 www.site.com 重定向到 site.com(或相反)。如果你不这样做,谷歌可能会认为这是两个不同的网站。
【讨论】:
在 Rails 2.3 中,这已更改为:
config.action_controller.session[:domain] = '.example.com'
或者如果会话变量尚未创建
config.action_controller.session = {:domain => '.example.com'}
【讨论】:
因为他们别名 www。到 。;你不能只是在前面加上www。到.?
【讨论】: