【问题标题】:Rails session not persisting on Rails using Android deviceRails 会话未在使用 Android 设备的 Rails 上持续存在
【发布时间】:2021-02-18 16:15:49
【问题描述】:

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

有谁知道是什么导致了这个问题?感谢您的帮助!

【问题讨论】:

    标签: ruby-on-rails session ruby-on-rails-6.1


    【解决方案1】:

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

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

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

    【讨论】:

    • 嗨,斯科特,谢谢您的回复!然而,这似乎不是答案。即使我设置了一个常规的持久 cookie,同样的问题仍然存在: 示例:cookies[:disabled_notices] ||= { value: '[]', expires: 1.year.from_now, same_site: "None", domain: :al Works在我的桌面浏览器上。但是在关闭移动浏览器并重新打开它之后,cookie就消失了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 2015-06-15
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多