Сеанс Rails не сохраняется в Rails на устройстве Android
У меня есть приложение Rails 6.1. Я храню переменную сеанса для исключенных уведомлений. Пользователь может отключить уведомление, и конкретное уведомление сохраняется в переменной сеанса.
Эта настройка отлично подходит для настольных компьютеров. Однако при открытии веб-сайта с помощью устройства Android созданный файл cookie сеанса не сохраняется после закрытия браузера. Таким образом, каждый раз, когда пользователь закрывает браузер и снова открывает его, создается новый файл cookie сеанса.
- Проблема не связана с конкретным браузером и возникает в мобильных браузерах.
- Я храню другие файлы cookie, которые сохраняются
Настройка следующая:
Сохраните ключ сеанса в контроллере:
session[:disabled_notices] ||= []
session[:disabled_notices] << params[:notice]
Проверьте, если уведомление исключено из переменной сеанса в представлении:
session[:disabled_notices].exclude?(notice_name)
session_store.rb
Rails.application.config.session_store :cookie_store, key: '_iftf_session', domain: :all
Кто-нибудь знает, что может вызвать эту проблему? Спасибо за помощь!
1 ответ
Файл cookie сеанса удаляется при закрытии браузера, если в браузере не включена функция восстановления сеанса. Вот почему они называются сеансовыми файлами cookie. Эта функция включена не во всех браузерах.
Попробуйте сохранить этот параметр в отдельном постоянном файле cookie (файл cookie с установленным атрибутом Max-age).
https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#define_the_lifetime_of_a_cookie