【发布时间】:2015-01-16 13:16:06
【问题描述】:
我正在制作这个小应用程序,它使用(或多或少)来自https://www.railstutorial.org/book 的会话管理代码。
它在开发模式下运行良好,如果在我的开发机器上以生产模式运行。当我部署到一台运行 nginx 和 Phusion Passenger 的机器上时,我开始在每个使用令牌的请求上获取 InvalidAuthenticityToken(例如带有 method: delete 的表单和链接)。
我已验证令牌已生成并与请求一起发送。
我注意到一件事。应用程序的主要区域/ 对所有人开放,不需要任何登录。需要登录的区域是/admin。在开发中运行时,会生成一个会话 cookie,其路径为 /。部署后,有两个会话 cookie,一个用于/,一个用于/admin。我怀疑 CSRF 令牌是使用一个会话生成的,然后使用另一个会话进行验证。
这听起来合理吗?我将如何进一步调查并修复它?
提前谢谢你。
【问题讨论】:
-
使用此命令重新生成新令牌 - rake secret
-
@CaffeineCoder 这有什么帮助?这只是打印出一个随机生成的令牌。
-
需要粘贴到secret_token.rb中
-
@CaffeineCoder 该文件在 Rails 4.0 之后不再使用。
标签: ruby-on-rails nginx passenger