Rails:动态会话域和子域之间的共享会话

我有一个有趣的案例。我正在为Rails 2.3应用程序开发白标功能,并且在设置动态会话域时遇到问题。 因此,每个白标都应该有自己的域名:company1.com,company2.com,company3.com。对每个子域的更多应该支持子域并在它们之间共享会话。 即test1.company1.com,test2.company1.com,company1.com< =应共享一个公共会话; test1.example.com,example.com< =应该共享一个公共会话但与company1.com不同。 在通用情况下(对于单个基本域),它是这样做的:
file:production.rb
config.action_controller.session[:domain] = '.company1.com'
如果我想支持多个域,我将必须根据访问的站点域动态设置此配置选项。我目前正试图以这种方式完成它:
file:environment.rb
require 'dispatcher'
module ActionController
  class Dispatcher
    def set_session_domain
      tld_size = SubdomainFu.tld_size+1
      host_name = @env['HTTP_HOST'].split('.')[-tld_size,tld_size].join('.')
      ActionController::Base.session = { :domain => ".#{host_name}" }
    end
    before_dispatch :set_session_domain
  end
end
但是上面的代码不起作用。 你有没有成功地做过类似的事情,或者你知道问题/解决方案可能在哪里? 提前谢谢您的时间     
已邀请:

bab

使用ActionController :: Base.session不起作用,因为它仅在初始化处理会话的机架中间件时使用,因此仅在启动应用程序时使用。为了使上面的代码工作,你应该使用
@env['rack.session.options']
看看这个例子: http://railsforum.com/viewtopic.php?id=41306     

要回复问题请先登录注册