5

私は 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 を実行しています

4

1 に答える 1

1

これを開発モードで動作させるには、同様の問題がありました。localhost を試してみたところ、うまくいきませんでした。ただし、/etc/hosts で localhost を指すように構成されたドメイン (computer.local など) を介してアクセスすることで、機能させることができました。

于 2010-03-12T04:24:07.893 に答える