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



使用移动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

感谢您的帮助。

要尝试的几件事:

  • 检查您的移动设备上是否设置了"私人浏览模式">

  • 确保您的密钥是唯一的,而不是字面上的"_myapp_session">

  • 确保secret_token/secret_key_base(取决于rails版本)设置为唯一值

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

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

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

我认为如果你想让它持久化,你可以添加expire_after: 14.days或类似的东西。请注意这意味着什么!这被认为是一种安全风险,因为此类cookie将被写入磁盘,如果用户没有实际注销,重新打开浏览器将授予对应用程序的访问权限,等等。

最新更新