Web でよくある問題は、ユーザーがフォームの送信ボタンを複数回クリックして、サーバーがフォームを複数回処理することです。これは、ユーザーがフォームを送信した後に戻るボタンを押して、再度処理された場合にも発生する可能性があります。
ASP.NET MVC でこれが起こらないようにする最善の方法は何ですか?
私が見ている可能性は次のとおりです。
- 送信後にボタンを無効にします - これは複数のクリックを回避しますが、ナビゲーションは回避しません
- 受信アクションがすぐにリダイレクトされるようにします - ブラウザはこれらのリダイレクトを履歴から除外しているようです
- セッションとフォームに一意のトークンを配置します - それらが一致する場合はフォームを処理します - そうでない場合は、フォームをクリアして新しい送信を行います
もっとありますか?
これらのいずれかの特定の実装はありますか?
3 番目のオプションは、偽造防止と同様の方法で、HtmlHelper 拡張機能を備えた ActionFilter として実装されていることがわかります。
MVC 関係者の皆様からのご連絡をお待ちしております。