Rails-围绕Authentity Token工作



在一个旧的Rails 2.0.2应用程序上,我有一个有趣的挑战需要解决(在更新到Rails 4的过程中,但我等不及解决这个问题了)。问题是:我们即将分发离线内容,最终将用户带到我们的网站。在从离线到在线的过渡过程中,他们会离线填写表格,但我们希望能够将数据发布到表格的在线版本,而无需用户填写两次相同的表格。我看到的问题是如何处理在线版本中更改的AuthentityToken。任何人都对我们如何解决这个问题有任何建议。我知道Authentity Token的目的是防止我试图做的事情,但我可以绕过它吗?例如,通过某种方式用离线版本的数据预填充在线版本?我认为我无法复制当前工作的真实性令牌/会话对,除非我能以某种方式将相同的session_id写入在线表单域的cookie?或者我必须在服务器端解决它?我试图避免仅仅为了这个问题而在服务器端使用自定义代码。。。提前感谢您的回复。

获取在线表单并使用查询字符串预填充字段,而不是张贴到在线表单

例如,一个有名字和姓氏的脱机表单在提交时会执行如下的GET请求:

mysite.com/offline_form/new?first_name=Dick&last_name=Steele  

此URL将呈现一个带有有效CSRF令牌的实时new表单。使用查询字符串填充输入字段。查询字符串可以通过params[]访问。

form_for :online do |f|
  f.text_field :first_name, value: params[:first_name]
  f.text_field :last_name, value: params[:last_name]
  # ...
end  

通过这种方式,您的用户可以提交CSRF令牌化的实时表单,而无需填写第二个表单。您的用户至少需要单击两个提交按钮。您可以将表单的在线版本作为确认步骤。

相关内容

最新更新