Странная проблема сеанса с Rails 3 reset_session и cookies.delete (...) в одном действии контроллера - PullRequest
3 голосов
/ 02 мая 2011

В своем действии выхода из системы я делаю это:

reset_session
cookies.delete(:rememberme)
redirect_to root_url

Но сеанс не уничтожается.

Когда я проверяю заголовки, запрос, отправленный в мое действие выхода из системы, четковключает идентификатор сеанса:

Cookie: hiddenalerts=site_vrfy_124258; __utmz=REMOVED_INFO.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); elpriv=REMOVED_INFO; SESSID=b39a9a89bb6a39ea91b620fe0da392ed; __utma=REMOVED_INFO; __utmc=REMOVED_INFO; __utmb=REMOVED_INFO

Но ответ только очищает cookie-файл Rememberme, но не очищает cookie-файл сеанса:

Set-Cookie: rememberme=; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT

Если я сравниваю это с теми же заголовками, когдаЯ комментирую удаление файла cookie запомнить.Запрос выглядит так же:

Cookie: hiddenalerts=site_vrfy_124258; __utmz=REMOVED_INFO.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); elpriv=REMOVED_INFO; SESSID=b39a9a89bb6a39ea91b620fe0da392ed; __utma=REMOVED_INFO; __utmc=REMOVED_INFO; __utmb=REMOVED_INFO

Но ответ выглядит больше, чем я ожидал (и мой сеанс корректно уничтожен):

Set-Cookie: SESSID=50640523cf32b5b0fe8c93eb16aba6dc; path=/; HttpOnly

Кто-нибудь еще испытывал это?Я могу только предположить, что обработчик сеанса и ApplicationController не содержат одну и ту же ссылку на cookie-файлы, поэтому, если вы измените cookie-файлы в контроллере, это сожжет все, что сделал reset_session.Я могу обойти эту проблему, удалив cookie-файл сеанса вручную, но я хотел бы понять, что происходит, и если сначала есть известный обходной путь.

Очевидно, мне нужна возможность удалить cookie-файл «запомнить меня» во времяпроцесс выхода из системы, в противном случае пользователь сразу же снова войдет в систему.

РЕДАКТИРОВАТЬ |Проблема поднята как ошибка.Я обойдусь сейчас.https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/6763-deleting-a-cookie-and-calling-reset_session-in-the-same-controller-action-does-not-send-new-session-cookie

1 Ответ

0 голосов
/ 02 мая 2011

Просто чтобы убедиться, но вы назначаете этот файл cookie для правильного ключа?печенье [: RememberMe]?Файл cookie не будет удален, если он не найдет ваш хэш-атрибут

...