Можем ли мы изменить токен CSRF для каждой формы запроса или даже для запроса вместо одного же токена для одного активного сеанса?
Django: создать новый токен CSRF для каждого запроса/формы
Ответ 1
В промежуточном программном обеспечении csrf они делают что-то вроде этого, которое перезаписывает набор файлов cookie:
request.META["CSRF_COOKIE"] = _get_new_csrf_key()
Вы можете импортировать _get_new_csrf_key()
через from django.middleware.csrf import _get_new_csrf_key()
. Поскольку это своего рода частный метод, я бы посоветовал не использовать такие хаки, как это.
Ответ 2
Предполагая, что у вас есть доступ к объекту request
:
from django.middleware.csrf import rotate_token
rotate_token(request)
Ответ 3
И если вы хотите использовать его в промежуточном программном обеспечении:
from django.middleware.csrf import rotate_token
class CSRFRefresh(object):
def process_response(self, request, response):
rotate_token(request)
return response