19 lines
647 B
Python
19 lines
647 B
Python
from django.http import JsonResponse
|
|
from utils.idempotency_helper import generate_idempotency_key, check_idempotency, get_user_identifier
|
|
|
|
|
|
class IdempotencyMiddleware:
|
|
def __init__(self, get_response):
|
|
self.get_response = get_response
|
|
|
|
def __call__(self, request):
|
|
if request.method == "POST":
|
|
user_id = get_user_identifier(request)
|
|
key = generate_idempotency_key(user_id, request.path, request.body)
|
|
|
|
if check_idempotency(key, 10):
|
|
return JsonResponse({"error": "请勿重复提交"}, status=409)
|
|
|
|
response = self.get_response(request)
|
|
return response
|