feat: 添加幂等性中间件 防止重复提交

This commit is contained in:
XIE7654
2025-10-16 20:21:55 +08:00
parent 42d5a3da21
commit 1756f549c9
6 changed files with 90 additions and 10 deletions

View File

@@ -0,0 +1,18 @@
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