2009-05-19 20 views
6

重複正確:How to handle multiple submissions server-side防止二重フォーム送信

手元の一般的なタスク:マルチユーザのWebベースのアプリケーションでダブルフォーム送信を防止します。金融取引を考える。

私はタンデムで使用できる2つの方法があります:

    • ボタン のJavaScriptが無効欠点は:JavaScriptが
  1. 無効になっバックエンドverficationがある場合は動作しません - どのくらい前にこのタイプの最後のリクエストがこのユーザーから来たのかを見てください。あまりにも前に、エラーを出してください。
    • 欠点:2件の提出が一緒に十分に接近している場合は、それぞれが他の

を意識することができない場合があり、私は彼らのベストプラクティスだけでなく、難解なトリックを拠出する主題の専門家を探しています。任意の言語とフレームワークが可能ですが、Djangoは特に興味があります。手元にあるタスクについてウェブ上にたくさんのことが書かれていますが、ここではベストプラクティスを示すことがうれしいでしょう。

+0

これは閉鎖されていますが、同様の質問はどこにありますか?二重提出防止タグはまったく同じ問題のシナリオを引き起こさない。 – vsingh

答えて

8

一般的な解決策は、フォームを生成するたびにサーバー上にトークンを生成することです。サーバーにトークンを格納し、それを隠しフィールドとしてフォームに追加し、そのトークンを使用してフォームのサブミットを取得したら、トークンを削除します。

有効なトークンなしでフォーム提出を取得した場合は、フォームがすでに送信されており、無視されていることを意味します。

これには、プロジェクトにXSRF保護機能を追加するという利点があります。

関連する問題