Rails 4.2 InvalidAuthenticityToken错误,但仅限于生产中

时间:2015-01-16 13:16:07

标签: ruby-on-rails nginx passenger

我正在制作这个使用(或多或少)https://www.railstutorial.org/book会话管理代码的小应用。

它在开发模式下工作正常,并且如果在我的开发机器上以生产模式运行。当我部署到运行nginx和Phusion Passenger的计算机时,我开始在每个请求上获取InvalidAuthenticityToken,其中使用了一个令牌(例如,表单和链接与method: delete)。

我已验证令牌已生成,并随请求一起发送。

我注意到了一件事。 /应用程序的主要区域对所有人开放,不需要任何登录。需要登录的区域为/admin。在开发中运行时,会生成一个路径为/的会话cookie。部署后,会有两个会话Cookie,一个用于/,另一个用于/admin。我怀疑CSRF令牌是使用一个会话生成的,然后使用另一个会话进行验证。

这听起来有道理吗?我将如何进一步调查并修复它?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

这似乎与Phusion Passenger 5 beta中的cookie有关:

Session being emptied on POST requests in 5.0.0-beta2

降级到4.0.57解决了问题。