ユーザーがフォームを二重に送信しないようにする方法を見つけようとしています。送信ボタンを無効にするJavaScriptがありますが、二重送信する方法を見つけるユーザーがたまにいます。
私は、これから保護するために作成できる再利用可能なライブラリのビジョンを持っています。
私の理想的なライブラリでは、コードブロックは次のようになります。
try:
with acquire_lock({'field1':'abc', 'field2':'def'}) as lock:
response = #do some credit card processing
lock.response = response
except SubmissionWasDuplicate, e:
response = e.response
ロックテーブルは次のようになります。
duplicate_submission_locks
- submit_hash#送信された引数のMD5
- 応答#漬けデータ
- created_at#このテーブルのスイープに使用
- lock_expired#ロックの有効期限が切れているかどうかを示すブール値
これがすでに存在するかどうか誰かが知っていますか?書くのは難しいことではないようですので、存在しない場合は自分で書くかもしれません。