Ответ 1
timeout_in
автоматически выйдет из системы в течение 10 минут бездействия и несовместим с флажком remember_me
. У вас может быть один, но не оба.
Я запутался с настройками конфигурации gem devem:
# The time the user will be remembered without asking for credentials again.
config.remember_for = 2.weeks
# The time you want to timeout the user session without activity. After this
# time the user will be asked for credentials again.
config.timeout_in = 10.minutes
Я хочу, чтобы пользователь установил флажок "Запомнить меня" (т.е. оставил меня вошедшим в систему), но таймаут сеанса по умолчанию - 10 минут. Через 10 минут он просит меня снова войти в систему, хотя я нажал "Запомнить меня". Если это правда, то remember_for действительно бессмысленно. Очевидно, что я что-то пропустил.
timeout_in
автоматически выйдет из системы в течение 10 минут бездействия и несовместим с флажком remember_me
. У вас может быть один, но не оба.
Райан прав в том, что по умолчанию Devise gem не поддерживает параметры: rememberable и: timeoutable. Однако, как и все вещи Ruby, если вам не нравится решение, которое сделал какой-то другой кодер, особенно когда он отклоняется от нормы, которую большинство пользователей могут ожидать, вы можете просто переопределить его.
Информация в предыдущих ответах устарела. Я протестировал свой проект, который использует Rails 4
и Devise 3.5.1
и также проверенный код разработки.
Теперь выясняется, был ли отмечен флажок Remember Me
:
if yes
, он проверяет if remember_exists_and_not_expired
, поэтому в основном использует config.remember_for
для управления сеансом
if no
, он проверяет if last_access <= timeout_in.ago
, используя config.timeout_in
соответственно