Если у вас есть приложение с несколькими субдоменами, и вы не хотите, чтобы файлы cookie сеансов были разделены между ними или, что еще хуже, у вас есть файл cookie верхнего домена .domain с той же session_key, плавающей рядом с файлом cookie субдомена (Rails будет держать один и бросать другой - я считаю, просто на основе порядка в заголовке запроса) - вы можете использовать крючки диспетчера, чтобы заставить cookie сеанса к поддоменам.
Включите крючок в 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.
Single_access_token не предназначен для постоянных сеансов - он предназначен для одиночных запросов (получение фида, требующего аутентификации, доступа к API и т. Д.). Последующие запросы, которые не содержат ключа, не будут иметь сеанса. – bensie
Да. В этом действии вы должны создать свой сеанс нового для этого субдомена. – wesgarrison