1

我目前正在将 Rails 应用程序从 2.1.0 升级到 2.3.14。现在大多数事情都运行良好,但是用户会话存在一个奇怪的问题:

当用户登录时,它会保存在会话中,即使在浏览器重新启动后也可以使用 - 应该如此。

但是:当我重新启动本地服务器并加载需要身份验证的页面时,会发生以下情况:

  1. Rails 在数据库中创建一个新的会话行,其 session_id 与以前完全相同。
  2. 在应用程序内部,“旧”会话不可用,旧会话数据不可用。
  3. 如果我之后只是重新加载页面(F5),则包含旧数据的正确会话将被加载。

该应用程序使用ActionController::Base.session_store = :active_record_store多个数据库(每个子域一个,不是我的决定)。选择正确的数据库作为 before_filter 和 rails 在这些数据库中保存会话。

我的猜测是,在服务器重新启动后,某些内容尚未正确设置,并且在错误的数据库中搜索会话并保留第一个请求(但在通过 设置后它保存在正确的数据库中ActiveRecord::Base.establish_connection)。

如果我的猜测是正确的,在建立连接后加载正确的会话应该可以解决这个问题。有没有办法从数据库中完全重新加载会话或告诉 Rails 为所有会话使用自定义数据库?

提前致谢!

4

0 回答 0