我有一个有趣的案例。我正在为Rails 2.3应用程序开发白标签功能,并且在设置动态会话域时遇到问题。Rails:动态会话域和子域之间的共享会话
因此,每个白标签应该有自己的域名:company1.com,company2.com,company3.com。他们每个人都应该拥有对子域名的支持,并在他们之间分享会话。
I.e. 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
但是,上面的代码不起作用。
你有没有做过类似的事情,或者你有什么想法可以解决问题/解决方案?
预先感谢您的宝贵时间
我能得到这个代码的工作。你能指出什么不工作?您是否尝试在每个步骤的日志中打印“#{host_name}”以查看您是否设置了正确的值?我的猜测是,您没有为:domain选项设置适当的值。 – 2010-12-16 22:56:57