Rails 3.2.6 session [:_ csrf_token]与meta标签不同

时间:2012-07-23 18:18:24

标签: ruby-on-rails memcached csrf dalli

我有一个Rails应用程序,我已经从3.0.7升级到3.2.6。我使用Dalli和memcached作为我的会话商店。

自我升级以来,我开始收到WARNING: Can't verify CSRF token authenticity错误,我的会话正在重置。

我在标题中致电csrf_meta_tags

在我的ApplicationController中,我已覆盖verify_authenticity_token以查看应用程序认为csrf_token是什么。

def verify_authenticity_token
  verified_request?
  Rails.logger.info "+++ VERIFY AUTH TOKEN +++"
  Rails.logger.info session.inspect
end

我从我的应用程序提交了一个表单,写入记录器的会话数据是: {"_csrf_token"=>"4OQ47F2py+l12lLSTnq0RTmyPbmPi2UGMZaPhMG6vVQ="}

这与元标记中页面上设置的值以及使用表单提交的值不同: {"authenticity_token"=>"qMsdBkTHoBH09+X0tnyoPsbtc752yKjCVHddrcufd7g="}


问题已解决

事实证明这是由于配置错误造成的。

我一直在config / initializers / session_store.rb中设置session_store配置:

require 'action_dispatch/middleware/session/dalli_store'
Rails.application.config.session_store :dalli_store

这是针对所有环境初始化的,但在开发环境中,缓存的默认配置为config.perform_caching = false

删除初始化程序文件并将会话存储配置移动到production.rb文件为我解决了这个问题。

config.session_store = :dalli_store, 'localhost:11211'

我只是不确定为什么这不是3.0.2中的问题,而是在3.2.6中。

0 个答案:

没有答案