feat: 添加幂等性中间件 防止重复提交
This commit is contained in:
18
backend/middleware/IdempotencyMiddleware.py
Normal file
18
backend/middleware/IdempotencyMiddleware.py
Normal 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
|
||||
Reference in New Issue
Block a user