В своем действии выхода из системы я делаю это:
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