0

我有一个 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

有谁知道什么可能导致这个问题?谢谢您的帮助!

4

1 回答 1

0

关闭浏览器时会删除会话 cookie,除非浏览器启用了会话恢复功能。这就是为什么它们被称为会话 cookie。并非所有浏览器都启用了此功能。

尝试将此设置存储在单独的持久 cookie(具有 Max-age 属性集的 cookie)中。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#define_the_lifetime_of_a_cookie

于 2021-02-18T17:25:54.067 回答