繁体   English   中英

Rails-解决真实性令牌

[英]Rails - Work Around Authenticity Token

对于旧的Rails 2.0.2应用程序,我面临着一个有趣的挑战(正在更新到Rails 4的过程中,但是我迫不及待地想解决这个问题)。 问题是这样的:我们将分发离线内容,这最终将使用户在线进入我们的网站。 在从离线到在线的过渡中,有一种表单可以离线填写,但是我们希望能够将数据发布到表单的在线版本中,而用户不必两次填写相同的表单。 我看到的问题是如何处理在线版本中更改的真实性令牌。 任何人都对我们如何解决此问题有任何建议。 我知道真实性令牌的目的是防止我尝试做的事情,但是我可以解决它,例如,通过某种方式用脱机版本中的数据预填充在线版本吗? 我认为除非能够以某种方式将相同的session_id写入在线表单域的cookie中,否则我无法复制当前正在工作的真实性令牌/会话对? 还是我必须在服务器端解决它? 我试图避免仅出于此问题而在服务器端使用自定义代码...谢谢您的任何答复。

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

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

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

该URL将呈现一个new的实时表单,并带有有效的CSRF令牌。 使用查询字符串填充输入字段。 可以通过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令牌化的表单,而不必填写第二个表单。 至少,您的用户将必须单击两个提交按钮。 您可以提供表单的在线版本作为确认步骤。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM