会话不会通过域

时间:2009-02-12 03:40:42

标签: ruby-on-rails session

在我的rails应用程序中,当我登录www.site.com地址时,我已经登录了。虽然没有退出,但我去了网站,http://site.com我已退出,但如果我回去,仍然会登录www.site.com地址。

我在环境变量中找不到任何设置,想知道如何在我的域上的所有域中保持此会话?

5 个答案:

答案 0 :(得分:5)

正确设置会话cookie;也就是说,对于.site.com和site.com,而不仅仅是www.site.com。

答案 1 :(得分: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'

(在这种情况下,您可能会根据生产/测试/开发环境中的域名进行一些切换)或尝试一些other configuration options

这比你在subject上想知道的更多。

答案 2 :(得分:0)

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

答案 3 :(得分: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

答案 4 :(得分:-1)

因为他们别名www。至 。;难道你不能只是在前面加上www。到了。?