Удаление файлов cookie сеанса через несколько поддоменов в Rails 3

Я создаю приложение для рельсов, которое работает аналогично Wufoo. Когда вы регистрируетесь, вы получаете поддомен, и вы можете войти в систему на домашней странице. Приложение работает, поэтому при входе в систему вы перенаправляетесь на свой поддомен. Проблема в том, что я не могу удалить сеанс в обоих доменах. Если вы выйдете из системы на (username.myapp.com), он останется на (myapp.com) и наоборот.

Сейчас я использую session[:user_id] = nil для удаления сеанса. Есть ли способ удалить все сеансы во всех доменах.

Кроме того, я добавил :domain => :all в свой session_store.rb файл, чтобы я мог оставаться в системе на нескольких поддоменах.


person Baylor Rae'    schedule 02.03.2011    source источник


Ответы (1)


Ключ действительно заключается в том, как вы устанавливаете файлы cookie сеанса, потому что вы не можете удалить cookie субдомена (username.myapp.com) из домена верхнего уровня (myapp.com). Чтобы решить эту проблему, вам нужно, чтобы все ваши общие файлы cookie сеанса были установлены в домене myapp.com. Для этого настройте свои сеансы следующим образом:

Rails.application.config.session_store :cookie_store, :domain => 'myapp.com'

Таким образом, когда вы уничтожите сеанс (session[:id] = nil), вы удалите общий файл cookie. Я считаю, что вам также придется удалить сеанс, используя session [: id] вместо session [: user_id].

person Pan Thomakos    schedule 02.03.2011