使用移动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将被写入磁盘,如果用户没有实际注销,重新打开浏览器将授予对应用程序的访问权限,等等。