我有一个2.2.3应用程序,我升级到2.3.2
它是一个多站点(使用子域),可为所有站点创建一个顶级会话.
这是我在production.rb中更改域的方式:
ActionController::Base.session_options[:domain] = "example.com" # in rails 2.2.2, this is what i used to do: # ActionController::Base.session_options[:session_domain] = "example.com"
升级后,奇怪的事情开始发生我无法再使用restful身份验证登录了.它确实对我进行了身份验证,但是一旦我被重定向,就会要求我再次登录.
正如我所说,我使用restful_authentication,我也使用乘客2.1.2.有人可以帮忙吗?
Olly的回答是正确的,在rails 2.3中它应该是:
config.action_controller.session[:domain] = '.example.com'
我只是想补充一点,如果你还没有创建一些会话选项,你可能会在使用它时收到:
undefined method `[]=' for nil:NilClass
在这种情况下,您应该使用它(它创建会话变量而不是更新它):
config.action_controller.session ||= {} config.action_controller.session[:domain] = '.example.com'
编辑:显然Rails 2.2.2项目使用不同的东西."domain"应命名为"session_domain",并将句点字符放在域前面.试试这个:
config.action_controller.session ||= {} config.action_controller.session[:session_domain] = 'example.com'