当iOS和Chrome浏览器关闭应用程序时,Rails会话过期

问题描述:

当使用移动Safari或Chrome关闭应用程序或标签页时,会话不会保存并过期。另一方面,它在桌面浏览器上运行得很好。当iOS和Chrome浏览器关闭应用程序时,Rails会话过期

以下是唯一的会话配置。

配置/初始化/ 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 
} 
  • 红宝石:V2.3.0
  • Rails的v4.2.8

谢谢你的帮助。

几件事情要尝试:

  • 检查你没有“隐私浏览模式”在您的移动设备设置

  • 确保您的关键是独特的东西,而不是从字面上 '_myapp_session'

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

  • 实验与指定要确切域,而不是使用:所有(这是只是一些测试,我不知道,如果手机浏览器会导致在这种情况下,一个贫穷的交互)

+0

感谢您的回应。我给最后一个尝试。 –

你是不是使用独立应用程序(webapp,但带有主屏幕图标)?独立应用程序不会保留即使是持久性cookie,因此,无论何时关闭独立应用程序,所有会话信息都会丢失。

此外,会话cookie不应该是持久性的(不应该有失效日期,并且默认情况下它们不会)。当浏览器(或标签)关闭时,应该删除非持久性cookie。所以实际上iOS工作正常。

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