Files
django-vue3-admin-gd/backend/middleware/IdempotencyMiddleware.py

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