Ruby on rails 当应用程序在iOS Chrome和Safari中关闭时,Rails会话将过期

Ruby on rails 当应用程序在iOS Chrome和Safari中关闭时,Rails会话将过期,ruby-on-rails,session,mobile-safari,mobile-chrome,Ruby On Rails,Session,Mobile Safari,Mobile Chrome,使用mobile Safari或Chrome关闭应用程序或选项卡时,会话不会保存并过期。另一方面,它在桌面浏览器上运行良好 下面是唯一的会话配置 config/initializers/session_store.rb # Be sure to restart your server when you modify this file. Rails.application.config.session_store :cookie_store, { key: '_myapp_session'

使用mobile Safari或Chrome关闭应用程序或选项卡时,会话不会保存并过期。另一方面,它在桌面浏览器上运行良好

下面是唯一的会话配置

config/initializers/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
}
  • Ruby:v2.3.0
  • Rails v4.2.8

感谢您的帮助。

有几件事可以尝试:

  • 检查您的移动设备上是否未设置“私人浏览模式”

  • 确保您的密钥是唯一的,并且不是字面上的“\u myapp\u session”

  • 确保secret\u token/secret\u key\u base(取决于rails版本)设置为唯一值

  • 尝试指定您想要的确切域,而不是使用:all(这只是要测试的东西,我不知道在这种情况下,移动浏览器是否会导致较差的交互。)


您是否不使用独立应用程序(webapp,但带有主屏幕图标)?独立应用程序甚至不会保留持久cookie,因此每当您关闭独立应用程序时,所有会话信息都会丢失

此外,会话cookie不应该是持久的(不应该有到期日期,默认情况下也没有)。当浏览器(或选项卡)关闭时,应删除非持久性cookie。所以事实上iOS是正确的


我想,如果你想让它持久化,你可以通过添加
expire\u在:14.天之后
或类似的时间。但是要知道这意味着什么!这被认为是一种安全风险,因为此类cookie将被写入磁盘,如果用户没有实际注销,重新打开浏览器将授予对应用程序的访问权限,等等。

感谢您的回复。我试试最后一个。你有没有想出解决这个问题的办法?我遇到了同样的事情。