簡體   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