Я пытаюсь найти способ запретить пользователям двойную отправку моих форм. У меня есть 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
- submission_hash # MD5 представленных аргументов
- ответ # маринованные данные
- create_at # используется для очистки этой таблицы
- lock_expired # логическое значение, если срок действия блокировки истек
Кто-нибудь знает, существует ли это уже? Его не сложно написать, поэтому, если он не существует, я могу написать сам.