Devise Rememberable не работает после закрытия приложений браузера Chrome/Firefox

В приложении Rails 4.2 у меня установлено Devise в приложении с активированными модулями Rememberable и Timeoutable.

Когда пользователь входит в систему, выбирает Remember Me и закрывает вкладку браузера, его логин сохраняется, когда он открывает новую вкладку и возвращается в приложение. Это согласуется с Chrome, Firefox и Safari.

Однако, когда пользователь входит в систему, выбирает Remember Me и закрывает браузерное приложение, он выходит из приложения, когда повторно открывает браузерное приложение и открывает новый браузер. вкладка Это согласуется с Chrome и Firefox. Safari, с другой стороны, работает так, как хотелось бы.

Можно ли сохранить учетные данные пользователя, когда он закрывает приложения браузера Chrome и Firefox? Я подозреваю, что это проблема с файлами cookie, но я не знаю, какие настройки мне нужно изменить, чтобы файлы cookie оставались действительными между закрытиями браузера app.

Поведение одинаково для платформ Windows и Mac.

Конфигурации

Хром

Settings > Content settings > Cookies > Allow local data to be set = selected

Сервер

  • Рельсы 4.2
  • Разработка 3.4.1

Клиент 1

  • Mac OSX 10.10.2 (Йосемити)
  • Chrome 41.0.2272.101 (64-разрядная версия)
  • Фаерфокс 36.0.4
  • Сафари 8.0.4 (10600.4.10.7)

Клиент 2

  • Windows 7
  • Хром 41.0.2272.101 м
  • Фаерфокс 36.0.4

Модель пользователя

# models/user.rb

devise :database_authenticatable, :recoverable, :rememberable, :registerable, :trackable, :validatable, :async, :timeoutable

Разработка конфигурации

# note: User model does have remember_created_at field installed

# config/initializers/devise.rb

Devise.setup do |config|
  ...
  config.remember_for = 2.weeks
  config.extend_remember_period = true
  config.rememberable_options = { secure: true }
  config.timeout_in = 2.weeks
  config.expire_auth_token_on_timeout = false
  ...
end

person Randy Burgess    schedule 23.03.2015    source источник
comment
Используете ли вы вход в систему по умолчанию? Кроме того, есть ли в вашей модели атрибут Remember_created_at?   -  person dostu    schedule 23.03.2015
comment
Да, по обоим пунктам. Я подозреваю, что именно поэтому закрытие вкладки браузера работает. Просто не уверен в закрытии приложения браузера.   -  person Randy Burgess    schedule 23.03.2015
comment
проверьте, не работает ли secure_compare   -  person Hitham S. AlQadheeb    schedule 24.03.2015
comment
@ HithamS.AlQadheeb как?   -  person karlingen    schedule 25.12.2015
comment
@wrburgess удалось это решить?   -  person karlingen    schedule 25.12.2015
comment
@wrburgess Было бы здорово, если бы вы могли сообщить об этом другим людям, которые могут столкнуться с той же проблемой. Даже просто никогда не понимал, что это будет лучше, чем ничего.   -  person Elliot Larson    schedule 08.04.2016
comment
Никогда не понимал этого   -  person Randy Burgess    schedule 27.04.2016


Ответы (1)


Это также случилось со мной, и обходным путем является добавление expire_after вручную в config\initializers\session_store.rb.

Rails.application.configure do
  config.session_store :cookie_store, key: '_my_app_session', expire_after: 2.years
end

Примечание: замените _my_app_session именем вашего файла cookie, которое вы можете проверить в своем браузере при открытии страницы в рабочей или тестовой версии right click > inspect > application > cookies

person Davin Wij    schedule 30.04.2021