当前位置:  开发笔记 > 程序员 > 正文

使用子域丢失rails 2.3.2 app中的会话

如何解决《使用子域丢失rails2.3.2app中的会话》经验,为你挑选了1个好方法。

我有一个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.有人可以帮忙吗?



1> Brian Armstr..:

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'

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有