C'est une histoire d'utilisation de django-request dans DRF.
--Enregistrer l'historique des demandes d'API
--Historique du contenu du corps de la requête tel que les paramètres POST ―― Puisqu'il y a aussi un point de vue sécurité, sauvegarder les paramètres POST est risqué, n'est-ce pas?
1 Installez avec pip etc.
pip install django-request
2 Ajoutez request
à ʻINSTALLED_APPS`
3 Ajoutez request.middleware.RequestMiddleware
à MIDDLEWARE
4 Exécution de la migration
manage.py migrate
La requête API est maintenant stockée dans la table request_request
.
Même la demande de django-admin sera enregistrée, donc je pense qu'il vaut mieux l'exclure Je l'ai fait comme ça (la santé est un laissez-passer pour un bilan de santé)
REQUEST_IGNORE_PATHS = (
r'^admin/', r'^docs/', r'^health$', r'\.ico$', r'^static/'
)
Étant donné que l'adresse IP utilise REMOTE_ADDR
, elle ne peut pas être obtenue correctement s'il existe un équilibreur de charge.
Je l'ai fait comme ça avec une mesure douce-amère (s'il vous plaît dites-moi s'il y a un meilleur moyen)
from request.middleware import RequestMiddleware
class XRequestMiddleware(RequestMiddleware):
def process_response(self, request, response):
# django-REMOTE en demande_J'ai enregistré ADDR en tant qu'IP, je suis donc obligé d'utiliser HTTP_X_FORWARDED_Changer pour FOR
http_x_forwarded_for_ip = request.META.get('HTTP_X_FORWARDED_FOR')
remote_addr_ip = request.META.get('REMOTE_ADDR')
if http_x_forwarded_for_ip:
request.META['REMOTE_ADDR'] = http_x_forwarded_for_ip
response = super().process_response(request, response)
if http_x_forwarded_for_ip:
request.META['REMOTE_ADDR'] = remote_addr_ip
return response
À propos, dans HTTP_X_FORWARDED_FOR
, les adresses IP peuvent être entrées séparées par des virgules, donc si vous utilisez REQUEST_IGNORE_IP
, vous devriez faire comme suit.
http_x_forwarded_for_ip = request.META.get('HTTP_X_FORWARDED_FOR').split(',')[0]
C'est facile à intégrer et c'est essentiel pour les données. Un autre problème est la sauvegarde lorsque les données sont accumulées. Cependant, je veux que vous mettiez à jour l'adresse IP ...
Recommended Posts