Удалить сессионные куки-файлы на нескольких поддоменах в Rails 3 - PullRequest
7 голосов
/ 03 марта 2011

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

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

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

1 Ответ

6 голосов
/ 03 марта 2011

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

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

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

...