Почему законный пользователь невольно выходит из системы? - PullRequest
0 голосов
/ 26 октября 2018

У меня есть приложение, построенное на Rails 2. Если пользователь открывает два экземпляра одного и того же приложения (dev, uat или любые два), оно выходит из системы, пока человек активен. Также это поведение противоречиво. иногда это происходит в течение 2 минут после входа в систему, а иногда - раз в полчаса.

Также очень интересно отметить, что если я отключу проверку токена CSRF, пользователь никогда не выйдет из системы, пока не истечет время сеанса или пользователь не выйдет добровольно.

- Update-- После более глубокого изучения проблемы я обнаружил, что CSRF не является причиной этой проблемы. Идентификатор сеанса удаляется из cookie. Что может быть возможной причиной проблемы

1 Ответ

0 голосов
/ 09 ноября 2018

Итак, как я уже сказал в своем вопросе, проверка CSRF не является причиной проблемы выхода из системы. Поэтому я покопался глубже и увидел, что случайно файл cookie session_id удалялся, и именно тогда, когда я пытался использовать приложение дальше, оно явно выходило из системы.

Таким образом, исправление для этого состояло в том, чтобы гарантировать, что cookie session_id нельзя разрешать удалять. Для этого я пометил cookie как безопасный. Хотя мне все еще не удалось выяснить причину удаления этого файла cookie.

Я использовал SqlSessionStore для хранения информации о сеансе. Ниже приводится исправление, которое я поставил:

ActionController::Dispatcher.middleware.swap(:"ActiveRecord::SessionStore",
                                             SqlSessionStore, {:secure => true})
...