4

複数のドメインをサポートする Rails アプリがあり、各ドメインには複数のサブドメインがある場合があります。

mydomain1.com にアクセスするユーザーは、mydomain2.com と同じエクスペリエンスを受け取りません (ただし、アプリの基本的な動作は同じです)。

したがって、ユーザーが mydomain1.com にログインしている場合、mydomain2.com にログインするべきではありません。

ユーザーが france.mydomain1.com にログインしている場合は、germany.mydomain1.com にログインする必要があります。

以前は、セッション ストア構成でドメインを設定することでこれを処理していました。

MyApp::Application.config.session_store :cookie_store, :key => '_MyApp_session', :domain => APP_CONFIG[:domain]

複数のドメインでこれを処理する最善の方法を見つけようとしていますか?

ハッキングしてみましActionDispatch::Callbackたが、そこからリクエストを利用できません。

1 つのアプリ内から複数の Cookie をサポートする良い方法を提案できる人はいますか?

理想的には、サブドメインごとに新しい Cookie を作成したいと思います。

4

2 に答える 2

5

あなたはそれをするべきです:

class ActionDispatch::Session::MultiDomainStore < ActionDispatch::Session::CookieStore
  def initialize(app, options = {})       
    super(app, options.merge!(:domain => compute_domain(app)))      
  end

  def compute_domain(app)
    ...
  end
end

MyApp::Application.config.session_store :multi_domain_store, :key => '_MyApp_session'

つまり、ドメインはドットで始まる必要があります。

于 2011-05-17T11:49:45.503 に答える
1

Cookie はドメインごとにのみ有効であるため、問題になることはありません。_MyApp_sessionforexample1.comとforを持つことができますexample2.com。Cookie はブラウザによって管理され、ドメインが一致する場合にのみホストに送信されます。

example1.com にアクセスしてログインすると、値がabcdef123. 次に example2.com にログインすると、ランダムな文字列を持つ別の Cookie が取得されますuvwxyz890

後で example1.com に戻ると、ブラウザーはこのドメインで有効な Cookie のみをアプリに送信します。アプリは何も管理する必要がなく、何もハッキングする必要はありません。

于 2011-05-17T08:40:30.567 に答える