在我们的生产站点上,我们使用 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版本之外,没有任何代码库发生变化。
更新:在本地服务器日志中,在 google chrome 和 mobile safari 上我收到:警告:无法验证 CSRF 令牌的真实性,但在 safari 上我没有。 = csrf_meta_tag 位于 application.haml 中
返回代码提交后,错误源于我们的 session_store.rb 初始值设定项中的更改。 Cookie 域未正确设置,因此,它导致会话被浏览器而不是应用程序本身重置为 nil。更改 config/initializers/session_store.rb 中的以下行后:
Application.config.session_store :cookie_store, :key => "_troopswap_session", :domain => '*domain.tld*'
to
Application.config.session_store :cookie_store, :key => "_troopswap_session", :domain => :all
cookie 没有被删除,我能够登录。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)