当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(取决于轨道版本)设置为唯一值
实验与指定要确切域,而不是使用:所有(这是只是一些测试,我不知道,如果手机浏览器会导致在这种情况下,一个贫穷的交互)
答
你是不是使用独立应用程序(webapp,但带有主屏幕图标)?独立应用程序不会保留即使是持久性cookie,因此,无论何时关闭独立应用程序,所有会话信息都会丢失。
此外,会话cookie不应该是持久性的(不应该有失效日期,并且默认情况下它们不会)。当浏览器(或标签)关闭时,应该删除非持久性cookie。所以实际上iOS工作正常。
我想如果你想使它持久,你可以通过添加expire_after: 14.days
或类似的。请注意这意味着什么!这被认为是一种安全风险,因为这样的cookies将写入磁盘,如果用户没有真正注销,重新打开浏览器将授予访问应用程序的权限等。
感谢您的回应。我给最后一个尝试。 –