5 dns session ruby-on-rails cross-domain
我对Rails和Rack很新,但是这个人看起来似乎很简单,关于使用Rack来实现动态会话域中间件.代码看起来很好,我已经在我的本地机器上实现了它,但我仍然无法在一次登录时超越顶级域名.
这是中间件代码:
class SetCookieDomain
def initialize(app, default_domain)
@app = app
@default_domain = default_domain
end
def call(env)
host = env["HTTP_HOST"].split(':').first
env["rack.session.options"][:domain] = custom_domain?(host) ? ".#{host}" : "#{@default_domain}"
@app.call(env)
end
def custom_domain?(host)
domain = @default_domain.sub(/^\./, '')
host !~ Regexp.new("#{domain}$", Regexp::IGNORECASE)
end
end
Run Code Online (Sandbox Code Playgroud)
然后在environment.db中:
config.load_paths += %W(#{RAILS_ROOT}/app/middlewares)
Run Code Online (Sandbox Code Playgroud)
最后在production.db(和development.db)中:
config.middleware.use "SetCookieDomain", ".example.org"
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏.
编辑:我正在运行Rails 2.3.3和Rack 1.0
我在开发模式下也遇到了类似的问题。当我尝试使用 localhost 时,我无法让它工作。但是,通过通过 /etc/hosts 中配置的指向 localhost 的域(例如 computer.local)访问它,我能够让它工作。