2026-05-18 16:39:29 -03:00

35 lines
1.0 KiB
Python

import logging
logger = logging.getLogger(__name__)
class LogIPMiddleware:
"""Middleware para logar o IP de cada requisição"""
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
# Obtém o IP do cliente
ip = self.get_client_ip(request)
# Loga o IP da requisição
logger.info(f"Request from IP: {ip} - Method: {request.method} - Path: {request.path}")
response = self.get_response(request)
return response
def get_client_ip(self, request):
"""
Obtém o IP real do cliente, considerando proxies
"""
# Verifica se há X-Forwarded-For (quando atrás de proxy/load balancer)
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
ip = x_forwarded_for.split(',')[0].strip()
else:
# Caso contrário, usa REMOTE_ADDR
ip = request.META.get('REMOTE_ADDR')
return ip