Подтвердить что ты не робот

Указать Запомнить меня и сеансы

Я запутался с настройками конфигурации 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 действительно бессмысленно. Очевидно, что я что-то пропустил.

4b9b3361

Ответ 1

timeout_in автоматически выйдет из системы в течение 10 минут бездействия и несовместим с флажком remember_me. У вас может быть один, но не оба.

Ответ 2

Райан прав в том, что по умолчанию Devise gem не поддерживает параметры: rememberable и: timeoutable. Однако, как и все вещи Ruby, если вам не нравится решение, которое сделал какой-то другой кодер, особенно когда он отклоняется от нормы, которую большинство пользователей могут ожидать, вы можете просто переопределить его.

Благодаря (отклоненному) запросу

Ответ 3

Информация в предыдущих ответах устарела. Я протестировал свой проект, который использует 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 соответственно