Rails: Dynamic Session Domain и сеанс совместного использования между субдоминами

StackOverflow https://stackoverflow.com/questions/4459182

Вопрос

У меня интересный случай. Я работаю над функциональностью белой маркировки для приложения Rails 2.3 и имею проблемы с настройкой динамических доменов сеанса.

Таким образом, у каждой белой марки должна быть собственный домен: company1.com, company2.com, company3.com. Больше, чем каждый из них должен иметь поддержку субдоменам и делиться сеансом между ними.

IE test1.company1.com, test2.company1.com, company1.com <= должен поделиться общей сессией; test1.example.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

Однако приведенный выше код не работает.

Вы сделали что -то подобное успешно или есть идеи, где может быть проблема/решение?

Заранее спасибо за ваше время

Это было полезно?

Решение

Использование ActionController :: Base.session не будет работать, потому что он используется только при инициализации промежуточного программного обеспечения для работы с сеансами, поэтому только при загрузке вашего приложения. Чтобы сделать вышеуказанный код работать, вы должны использовать

@env['rack.session.options']

Посмотрите здесь на пример:

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top