首页 > 解决方案 > Rails Shopify 应用程序中的 InvalidAuthenticityToken

问题描述

我有一个使用 shopify_app gem 的 Shopify 应用程序。我试图将表单发布到管理页面,但不断收到 InvalidAuthenticityToken。我正在使用 Rails 5.1.6 并设置了 config.action_controller.per_form_csrf_tokens = false 来帮助识别问题。我已经确认元 csrf-token、authenticity_token 表单字段和authentity_token 被发布到服务器所有相同的值。

<meta name="csrf-token" content="FW84k6S5WXpepe+1gADRh+Ly1kBVWrkJohP5QYz54a35KqKZghuciwU0lIlLNRVoHjOM8peOoCqf+HXDDIlMZQ==">


<input type="hidden" name="authenticity_token" value="FW84k6S5WXpepe+1gADRh+Ly1kBVWrkJohP5QYz54a35KqKZghuciwU0lIlLNRVoHjOM8peOoCqf+HXDDIlMZQ==">


Parameters: {"utf8"=>"✓", "authenticity_token"=>"FW84k6S5WXpepe+1gADRh+Ly1kBVWrkJohP5QYz54a35KqKZghuciwU0lIlLNRVoHjOM8peOoCqf+HXDDIlMZQ==", "access_key"=>{"name"=>"A Test", "account"=>""}, "commit"=>"Save", "id"=>"2"}

控制器继承了 ShopifyApp::AuthenticatedController 并且我已经删除了所有 before_actions。

有没有办法记录预期的authenticity_token 值应该是什么?

如果有人可以提供一些指导,将不胜感激。

谢谢你。

标签: ruby-on-railsruby-on-rails-5shopifyshopify-appauthenticity-token

解决方案


我的实例遇到了类似的问题。检查以确保您的 request.base_url 是预期的。

在我的情况下,我不得不强制 SSL(在 config/environments/{development,production,test}.rb 中)并将 X-Forwarded-Proto 从我的代理传递到 Rails 实例,因为 http/https 之间存在冲突request.base_url,结果抛出了一个 CSRF 错误。

在环境配置中强制使用 SSL:

config.force_ssl = true

服务器块中的 nginx proxy_set_header:

proxy_set_header X-Forwarded-Proto $scheme

——戴夫。


推荐阅读