3

興味深い事例があります。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

ただし、上記のコードは機能しません。

同様のことを成功させましたか、それとも問題/解決策がどこにあるのか分かりますか?

お時間をいただきありがとうございます

4

1 に答える 1

2

ActionController::Base.session の使用は機能しません。これは、セッションを処理するラック ミドルウェアの初期化時にのみ使用され、アプリの起動時にのみ使用されるためです。上記のコードを機能させるには、使用する必要があります

@env['rack.session.options']

例については、こちらをご覧ください。

http://railsforum.com/viewtopic.php?id=41306

于 2011-07-14T12:32:12.290 に答える