2

在我们的生产站点上,我们使用的是 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

4

2 回答 2

4

在返回代码提交后,错误源于我们的 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 没有被删除,我可以登录。

于 2012-07-25T16:52:36.923 回答
0

Without diving into this too far, have you tried disabling the CSRF token verification feature.

With your Update you mentioned that the logs where warning about the CSRF, this would lead me to believe that rails of authlogic are flagging the request as forgery.

于 2012-07-24T16:00:13.577 回答