Сессия Rails истекает, когда приложение закрывается в iOS Chrome и Safari

Сеанс не сохраняется и истекает, когда приложение или вкладка закрываются с помощью мобильного Safari или Chrome. С другой стороны, он отлично работает в настольных браузерах.

Ниже приведена единственная конфигурация сеанса.

конфигурация/инициализаторы/session_store.rb

# Be sure to restart your server when you modify this file.

Rails.application.config.session_store :cookie_store, {
  key: '_myapp_session',
  domain: :all
}
  • Руби: v2.3.0
  • Рельсы v4.2.8

Спасибо тебе за помощь.


person Oguz Bilgic    schedule 19.05.2017    source источник
comment
Вы когда-нибудь находили решение для этого? Я сталкиваюсь с тем же.   -  person maxhs    schedule 28.03.2018


Ответы (2)


Пара вещей, чтобы попробовать:

  • Убедитесь, что на ваших мобильных устройствах не установлен «Частный режим просмотра».

  • Убедитесь, что ваш ключ уникален и не является буквально «_myapp_session».

  • Убедитесь, что для secret_token/secret_key_base (в зависимости от версии рельсов) установлено уникальное значение.

  • Поэкспериментируйте с указанием точных доменов, которые вы хотите, вместо использования :all (это просто то, что нужно проверить, я не знаю, вызовут ли мобильные браузеры плохое взаимодействие в этом случае).

person Rose    schedule 24.05.2017
comment
Спасибо за ответ. Попробую последнюю. - person Oguz Bilgic; 26.05.2017

Вы не используете автономные приложения (веб-приложение, но со значком на главном экране)? Автономные приложения не сохраняют даже постоянные файлы cookie, поэтому каждый раз, когда вы закрываете автономное приложение, вся информация о сеансе теряется.

Кроме того, файлы cookie сеанса не должны быть постоянными (не должны иметь срока действия, и по умолчанию они не имеют). Предполагается, что непостоянный файл cookie удаляется при закрытии браузера (или вкладки). Так ведь iOS работает корректно.

Я думаю, если вы хотите сделать его постоянным, вы можете добавить expire_after: 14.days или подобное. Однако знайте, что это значит! Это считается угрозой безопасности, поскольку такие файлы cookie будут записаны на диск, повторное открытие браузера предоставит доступ к приложению, если пользователь на самом деле не вышел из системы и т. д.

person Gabor Lengyel    schedule 27.05.2017