在我的Rails应用程序中,当我登录www.site.com地址时,我登录得很好。虽然没有注销,但我去了该网站,http://site.com我已注销,但如果我返回,仍然在www.site.com地址登录。会话不通过域名
我找不到在环境变量中设置的任何内容,关于如何让我的域中的所有域保持此会话的任何想法?
在我的Rails应用程序中,当我登录www.site.com地址时,我登录得很好。虽然没有注销,但我去了该网站,http://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'
(在这种情况下,你也可以做基于生产/测试/开发env的域名一些开关)或尝试一些other configuration options。
这是比你想知道更多关于subject。
正确设置会话cookie;即.site.com和site.com,而不仅仅是www.site.com。
我不知道你是什么意思是通过正确设置会话cookie。我永远不会记得设置它。我只是使用会议[:user_id]并前进。 – Garrett 2009-02-12 03:59:54
因为它们别名www。至 。;你不能只是预先登录www。到...上?
您应该将www.site.com重定向到site.com(或其他方式)。如果你不这样做,谷歌可能会认为这是两个不同的网站。
+1虽然这不能回答这个问题,但它肯定是你应该实现的。 – Matt 2009-06-11 00:09:43
在Rails 2.3这已更改为:
config.action_controller.session[:domain] = '.example.com'
,或者如果会话变量尚未创建
config.action_controller.session = {:domain => '.example.com'}
按照你所说的工作。 :-) – Garrett 2009-03-04 02:20:47