2012-07-23 81 views
2

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

问题是,我能够登录到运行rails 3.2.3和authlogic 3.1.0的生产环境中,但在功能分支上本地升级到rails 3.2.6和authlogic 3.1.3时,两者都需要登录谷歌铬和移动Safari浏览器无法正常工作,并且由于无会话而重定向,而本地登录在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

回到代码提交后,错误源于session_store.rb初始化程序中的更改。 Cookie域未正确设置,因此导致会话被浏览器而不是应用程序本身重置为零。更改以下行中配置/初始化/ 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也不会被丢弃,我能够登录。

0

没有深入这个太过分了,你是否尝试禁用CSRF令牌验证功能。

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

+0

我在application_controller.rb内注释掉了protect_from_forgery,并且如预期的那样错误不再存在于日志文件中,但它似乎仍将会话重置为零并重定向回登录页面 – 2012-07-24 17:20:21

+0

没有任何其他代码示例我无法提供任何额外的支持或建议。我可能会尝试追踪代码更改(从简单开始),因为工作或下降版本的authlogic或确保从authlogics运行最新的ode基地Github回购 – davidcollom 2012-07-24 21:19:18