【问题标题】:Session Nil with Rails 3.2.6 and authlogic 3.1.3Rails 3.2.6 和 authlogic 3.1.3 的 Session Nil
【发布时间】:2012-07-26 00:52:36
【问题描述】:

在我们的生产站点上,我们使用的是 rails 3.2.3 和 authlogic 3.1.0。我可以使用任何浏览器登录到我们的 rails 应用程序。我们目前正在迁移到 rails 3.2.6 以及升级以使用资产管道,因此我们还将 authlogic 升级到 3.1.3。

问题是,我能够登录到运行 rails 3.2.3 和 authlogic 3.1.0 的生产环境,但是当在功能分支上本地升级到 rails 3.2.6 和 authlogic 3.1.3 时,请同时登录 google chrome 和移动 safari 无法正常工作,并且由于 nil 会话而重定向,而本地登录在 safari 和 firefox 中有效。我已检查并在所有测试设备上接受 cookie。唯一的问题似乎在 rails 3.2.3 / authlogic 3.1.0 和 rails 3.2.6 / authlogic 3.1.3 之间,因为除了 gem 版本之外没有任何代码库发生变化。

更新:在本地服务器日志中,在谷歌浏览器和移动 safari 上我都得到:警告:无法验证 CSRF 令牌的真实性,但在 safari 上我不是。 = csrf_meta_tag 在 application.haml 中

【问题讨论】:

    标签: ruby-on-rails ruby authlogic


    【解决方案1】:

    返回完成代码提交后,错误源于我们的 session_store.rb 初始化程序中的更改。 cookie 域未正确设置,因此导致会话被浏览器而不是应用程序本身重置为零。在 config/initializers/session_store.rb 中更改以下行后:

    Application.config.session_store :cookie_store, :key => "_troopswap_session", :domain => '*domain.tld*'

    Application.config.session_store :cookie_store, :key => "_troopswap_session", :domain => :all

    cookie 没有被删除,我可以登录。

    【讨论】:

      【解决方案2】:

      在没有深入研究的情况下,您是否尝试过禁用 CSRF 令牌验证功能。

      在您的更新中,您提到了有关 CSRF 的警告日志,这会让我相信 authlogic 的 rails 将请求标记为伪造。

      【讨论】:

      • 我确实从 application_controller.rb 中注释掉了protect_from_forgery,并且正如预期的那样,错误不再出现在日志文件中,但是它似乎仍然将会话重置为 nil 并重定向回登录页面
      • 如果没有任何额外的代码示例,我真的无法提供任何额外的支持或建议。我可能会尝试跟踪代码更改(从简单开始),因为工作或删除 authlogic 版本或确保从 authlogics Github repo 运行最新的 ode 库
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多