我有一个 2.2.3 的应用程序,我升级到 2.3.2
它是一个多站点(使用子域),可为所有站点创建一个顶级 session 。
这就是我在 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,我也使用passenger 2.1.2。
任何人都可以帮忙吗?
最佳答案
Olly 的回答是正确的,在 rails 2.3 中应该是:
config.action_controller.session[:domain] = '.example.com'
我只想补充一点,如果您还没有创建一些 session 选项,则在使用它时可能会收到:
undefined method `[]=' for nil:NilClass
在这种情况下,您应该改用它(它会创建 session 变量而不是更新它):
config.action_controller.session ||= {}
config.action_controller.session[:domain] = '.example.com'
编辑:显然 Rails 2.2.2 项目使用不同的东西。 “域”应命名为“session_domain”并去掉域前面的句点字符。尝试这个:
config.action_controller.session ||= {}
config.action_controller.session[:session_domain] = 'example.com'
关于ruby-on-rails - 使用子域在 rails 2.3.2 应用程序中丢失 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/663893/