配置Rails应用程序以处理多个子域和多个cookie

bod*_*ous 4 cookies ruby-on-rails session-cookies actiondispatch ruby-on-rails-3

我有一个支持多个域的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]
Run Code Online (Sandbox Code Playgroud)

我正在尝试找出处理多个域的最佳方法吗?

我已经尝试过黑客攻击,ActionDispatch::Callback但是请求无法从那里获得.

任何人都可以建议在一个应用程序中支持多个cookie的好方法吗?

理想情况下,我想为每个子域创建一个新的cookie .

Ant*_*ton 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'
Run Code Online (Sandbox Code Playgroud)

即你的域名应该以点开头.