【问题标题】:Rails session expires when app is closed in iOS Chrome and Safari在 iOS Chrome 和 Safari 中关闭应用程序时,Rails 会话过期
【发布时间】:2017-05-19 01:58:13
【问题描述】:

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

感谢您的所有帮助。

【问题讨论】:

  • 您有没有为此找到解决方案?我遇到了同样的事情。

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


【解决方案1】:

有几件事可以尝试:

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

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

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

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

    李>

【讨论】:

  • 感谢您的回复。我会试试最后一个。
  • @OguzBilgic 你有没有想过这个问题?我面临同样的问题。会话在桌面浏览器上保持,但一旦浏览器关闭,它就会被擦除,用户必须重新登录。
【解决方案2】:

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

此外,会话 cookie 不应该是持久的(不应该有过期日期,默认情况下没有)。关闭浏览器(或选项卡)时,应该删除非持久性 cookie。所以实际上 iOS 可以正常工作。

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

【讨论】:

    猜你喜欢
    • 2021-02-19
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 2011-12-05
    • 1970-01-01
    相关资源
    最近更新 更多