私は Rails と Rack にはかなり慣れていませんが、Rack を使用して動的なセッション ドメイン ミドルウェアを実装する方法について、この人は一見簡単に説明しているように見えます。コードは見栄えがよく、ここでローカル マシンに実装しましたが、1 回のログインでトップ レベル ドメインを超えることはまだできません。
ミドルウェア コードは次のとおりです。
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
そして、environment.db で:
config.load_paths += %W(#{RAILS_ROOT}/app/middlewares)
最後に production.db (および development.db):
config.middleware.use "SetCookieDomain", ".example.org"
どんな助けでも大歓迎です。
編集: Rails 2.3.3 と Rack 1.0 を実行しています