我们正在将Rails 3.0.0
迁移到Rails 3.2.21
。突然间,我们开始在用户登录的集成测试中遇到InvalidAuthenticityToken
(见下文)。
post_via_redirect login_url, {:login => { :login => @user.login, :password => @user.password }
我们有自定义身份验证逻辑,而且它的工作时间更早。
我们还尝试在上面的调用中手动传递authenticity_token
,但它没有帮助。我们尝试调试并发现当我们通过authenticity_token
时(使用SecureRandom.base64(32)
),_csrf_token
值与我们在authenticity_token
中传递的值不匹配。
我们是否遗漏了任何配置?
答案 0 :(得分:1)
为authenticity_token定义一个方法,并在出现此错误的任何地方使用。
def set_form_authenticity_token
session[:_csrf_token] ||= SecureRandom.base64(32)
end
实施例。
params.merge(authenticity_token: set_form_authenticity_token)