Если у вас есть приложение с несколькими поддоменами, и вы не хотите, чтобы сессионные куки-файлы распределялись между ними, или, что еще хуже, у вас есть куки-файл сессии .domain верхнего уровня с тем же сессионным ключом, плавающим рядом с вашим куки-файлом сессии субдомена (Railsоставьте одно и бросьте другое - я полагаю, что это просто на основе порядка в заголовке запроса) - вы можете использовать перехватчики диспетчера, чтобы принудительно использовать куки-файл сеанса для поддоменов.
Включить перехват в ActionController из расширения.
base.send :after_dispatch, :force_session_cookies_to_subdomains
Установите этот домен в своем обработчике after_.
@env['rack.session.options'] = @env['rack.session.options'].merge(:domain => 'my_sub_domain' end)
Для нас мы рассмотрим @env [HTTP_HOST], чтобы определить, каким должен быть [my_sub_domain].
При таком подходе вход пользователя в систему должен происходить на поддомене, чтобы браузер мог принять файл cookie с поддоменом (если только не используется шаблон, такой как Authlogic Params, для распространения наследующий запрос на поддомен).
Примечание. Браузер будет отклонять cookie-файл поддомена, когда запрос поступает из домена более высокого уровня.Для нас это не так уж плохо - это приводит к тому же результату, который нам требуется, что cookie-файл сеанса верхнего уровня не создается, а затем отправляется на субдомены.
Другой подход к аналогичной цели может заключаться в том, чтобы принудительно не устанавливать cookie, если он не из поддоменов.Не тратя на это много времени, я смог добиться этого -
request.env["rack.session"] = ActionController::Session::AbstractStore::SessionHash.new(self, request.env)
в фильтре после в ApplicationController.