Добрый день.
Возможно ли для работы csrf токена сделать исключения для конкретного IP адреса?
Т.е. например по POST запросу от такого то ip не отрабатывать csrf токен?
Спасибо.
from django.conf import settings # some utility function that gets clients ip address, e.g. def get_client_ip(request): x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') if x_forwarded_for: ip = x_forwarded_for.split(',')[-1].strip() else: ip = request.META.get('REMOTE_ADDR') return ip # middleware.py class MyCustomCsrfMiddleware(CsrfViewMiddleware): def process_view(self, request, callback, callback_args, callback_kwargs): ip = get_client_ip(request) trusted_ip_list = getattr(settings, 'TRUSTED_CSRF_IPS', []) if trusted_ip_list: if request.META['IP_ADDRESS'] in trusted_ip_list: return self._accept(request) return super().process_view(request,callback, callback_args, callback_kwargs) # TRUSTED_CSRF_IPS = ["103.12.12.7", ] # shold be defined in your settings.py
scidamа как подключить?
Попробуйте создать свой middleware, ответственный за проверку csrf. Например, как-то так:
if ip in trusted_ip_list:
if request.META['IP_ADDRESS'] in trusted_ip_list:
ivnИспользовать в перечне MIDDLEWARE_CLASSES свою MyCustomCsrfMiddleware вместо
scidam1.9.10
if ip in trusted_ip_list:
if request.META['IP_ADDRESS'] in trusted_ip_list:
if ip in trusted_ip_list: