Как разделить сессии между поддоменами с помощью Rails 2.3.8 - PullRequest
2 голосов
/ 19 сентября 2010

Я нашел множество постов, которые описывают, как это сделать. Все они выглядят так, будто помещают это в соответствующий файл конфигурации среды:

config.action_controller.session[:domain] = '.localhost'

Однако, если я сделаю это, то попытка войти (я использую devise) завершится неудачно с:

ActionController::InvalidAuthenticityToken

Я вижу, что другие публикуют ту же проблему (в разделе комментариев различных блогов, предлагающих рекомендации по установке сессии [: домен]), но я не нашел случая, чтобы кто-нибудь ответил на вопрос о том, почему это происходит, как это исправить.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 19 сентября 2010

У меня есть этот фрагмент в config / initializers / set_session_domain.rb:

module ActionControllerExtensions
  def self.included(base)
    base::Dispatcher.send :include, DispatcherExtensions
  end

  module DispatcherExtensions
    def self.included(base)
      base.send :before_dispatch, :set_session_domain
    end

    def set_session_domain
      domain = @env['HTTP_HOST'].gsub(/:\d+$/, '').gsub(/^[^.]*/, '')
      @env['rack.session.options'].update :domain => domain
    end
  end
end

ActionController.send :include, ActionControllerExtensions

Все работает очень хорошо.

1 голос
/ 19 сентября 2010

Я не уверен, связано ли это с вашей проблемой, но вы пытаетесь установить для домена сеанса значение «.localhost»?Это не будет работать, так как это домен верхнего уровня, для которого вы пытаетесь установить cookie.

См. http://www.ruby -forum.com / topic / 181650 # 794923

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...