У меня есть приложение Rails 3.0.9, использующее Devise 1.4.9.У меня есть небольшая проблема с экранами входа.Я думаю, что понимаю проблему, так как ранее я исправил аналогичную проблему в приложении на Си.Но на этот раз я просто использую devise, так что сложнее просто исправить исходный код ...
Основной шаблон - я выхожу из приложения, что приводит меня к URL-адресу, например такому: http://10.0.0.25:3000/devise/users/sign_in
Затем я иду домой и возвращаюсь на работу на следующий день с указанным выше адресом, все еще открытым в браузере.Я набираю пароль, но я просто получаю сообщение о том, что мой сеанс истек, и мне нужно повторно ввести пароль.
Делая обоснованное предположение, когда пользователю показывают страницу sign_in, devise создаетновый сеанс, который в данный момент не зарегистрирован. Когда пользователь отправляет страницу, devise проверяет, существует ли сеанс, а затем проверяет учетные данные.По соображениям безопасности учетные данные не будут работать для истекшего (или неизвестного) сеанса.
Исправление в приложении C состояло в том, чтобы разрешить очень длительный тайм-аут для сеансов, которые никогда не входили в систему. Как только сеансвошел в систему, он должен выйти из системы после относительно небольшой задержки, поэтому простого изменения config.timeout_in
будет недостаточно.
РЕДАКТИРОВАТЬ: Я заметилвозиться с тайм-аутом, установленным в 1 минуту, что тайм-аут не вошедшего в систему сеанса не изменится на одну минуту (на самом деле я не заметил, изменился ли он вообще ...) Так что должно быть что-то ещеэто делает это.
Также я понял, что когда сеанс не вошел в систему, в cookie сеанса не сохраняется время, поэтому я даже не знаю точно, как сервер определяет возраст сеанса (я нетаблица сеансов на стороне сервера).