ruby-on-rails - 使用子域在 rails 2.3.2 应用程序中丢失 session

标签 ruby-on-rails session restful-authentication

我有一个 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/

相关文章:

ruby-on-rails - 使用 Rails 上的 Factory Girl 时出现“没有路线匹配”错误

ruby-on-rails - 为什么在重新打开类(class)时有时会使用 class_eval?

Swift OSX - Parse.com - 保存新用户而不进行更改

java - 我正在学习做 Restful 网络服务,同时实现我得到以下错误帮助我解决

python - 如何保护我在应用程序内进行的 REST 调用?

node.js - 基于 REST 的 API 服务应使用哪种身份验证机制?

ruby-on-rails - rails : Overriding ActiveRecord association method

ruby-on-rails - Facebook 和 Twitter 小部件在导航中消失 (Rails)

session - 更改 session 模式以迁移到 Windows azure

asp.net - 在页面之间存储 ID 最多一天?