在iOS Chrome和Safari中关闭应用时,Rails会话即会到期

时间:2017-05-19 01:58:14

标签: ruby-on-rails session mobile-safari mobile-chrome

使用移动版Safari或Chrome关闭应用或标签时,会话无法保存并过期。另一方面,它在桌面浏览器上运行良好。

以下是唯一的会话配置。

配置/初始化/ 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

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

有几件事要尝试:

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

  • 确保您的密钥是独一无二的,而不是字面上的'_myapp_session'

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

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

答案 1 :(得分:0)

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

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

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