2009-02-12 118 views
1

在我的Rails应用程序中,当我登录www.site.com地址时,我登录得很好。虽然没有注销,但我去了该网站,http://site.com我已注销,但如果我返回,仍然在www.site.com地址登录。会话不通过域名

我找不到在环境变量中设置的任何内容,关于如何让我的域中的所有域保持此会话的任何想法?

回答

2

当您为“site.com”设置会话cookie时,它将与“www.site.com”不同。您需要将“cookie_domain”指定为“.site.com”,它将设置Cookie或所有子域。在PHP中,您可以使用ini_setsession_set_cookie_params来设置session.cookie_domain。在Rails中,你可以添加一个小的脚本到enviroment.rb - 是这样的:

ActionController::Base.session_options[:session_domain] = '.site.com'

(在这种情况下,你也可以做基于生产/测试/开发env的域名一些开关)或尝试一些other configuration options

这是比你想知道更多关于subject

+0

按照你所说的工作。 :-) – Garrett 2009-03-04 02:20:47

5

正确设置会话cookie;即.site.com和site.com,而不仅仅是www.site.com。

+0

我不知道你是什么意思是通过正确设置会话cookie。我永远不会记得设置它。我只是使用会议[:user_id]并前进。 – Garrett 2009-02-12 03:59:54

-1

因为它们别名www。至 。;你不能只是预先登录www。到...上?

0

您应该将www.site.com重定向到site.com(或其他方式)。如果你不这样做,谷歌可能会认为这是两个不同的网站。

+0

+1虽然这不能回答这个问题,但它肯定是你应该实现的。 – Matt 2009-06-11 00:09:43

0

在Rails 2.3这已更改为:

config.action_controller.session[:domain] = '.example.com' 

,或者如果会话变量尚未创建

config.action_controller.session = {:domain => '.example.com'} 

Losing session in rails 2.3.2 app using subdomain