Session Nil with Rails 3.2.6 and authlogic 3.1.3

时间:2012-07-23 20:05:21

标签: ruby-on-rails ruby authlogic

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

2 个答案:

答案 0 :(得分:4)

在返回代码提交后,错误又导致我们的session_store.rb初始化程序发生了变化。 Cookie域未正确设置,因此,它导致会话被浏览器重置为nil而不是应用程序本身。更改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,我可以登录。

答案 1 :(得分:0)

如果没有深入研究,请尝试禁用CSRF令牌验证功能。

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