Метод set_signed_cookie

Метод set_signed_cookie применяется к объекту HttpResponse и позволяет установить подписанную cookie, которая будет отправлена клиенту. Подпись гарантирует, что данные не были изменены на стороне клиента, так как сервер проверяет подпись при получении cookie обратно. Метод принимает обязательные параметры: ключ (имя cookie), значение и необязательные параметры для настройки срока действия и безопасности. Подписанные cookie особенно полезны для хранения чувствительных данных, которые должны быть защищены от подделки.

Синтаксис

pythonresponse.set_signed_cookie(key, value, salt='', max_age=None, expires=None, path='/', domain=None, secure=False, httponly=False, samesite=None)

Параметры

Метод принимает следующие параметры:

Пример . С установкой простой подписанной cookie

Давайте установим подписанную cookie с именем пользователя в представлении:

pythonfrom django.http import HttpResponse

def set_username_cookie(request):
  response = HttpResponse("Cookie установлена")
  response.set_signed_cookie('username', 'john_doe')
  return response

После этого клиент получит cookie, подписанную сервером. При следующем запросе сервер сможет проверить подпись с помощью метода get_signed_cookie.

Пример . С защитой от подделки

Используем параметр salt для дополнительной защиты подписи:

pythonfrom django.http import HttpResponse

def set_protected_cookie(request):
  response = HttpResponse("Защищенная cookie")
  response.set_signed_cookie(
    'user_id',
    12345,
    salt='secret_salt_for_user_id'
  )
  return response

Пример . С ограничением срока действия

Установим cookie, которая будет действовать только 30 секунд:

pythonfrom django.http import HttpResponse

def set_temporary_cookie(request):
  response = HttpResponse("Временная cookie")
  response.set_signed_cookie(
    'temp_data',
    'value_for_30_seconds',
    max_age=30
  )
  return response

Результат выполнения кода:

python"Cookie установлена с сроком действия 30 секунд"

Пример . С настройкой безопасности

Установим защищенную cookie с флагами безопасности:

pythonfrom django.http import HttpResponse

def set_secure_cookie(request):
  response = HttpResponse("Безопасная cookie")
  response.set_signed_cookie(
    'session_id',
    'abc123xyz',
    secure=True,
    httponly=True,
    samesite='Strict'
  )
  return response

Пример . С использованием datetime для expires

Установим cookie с явной датой истечения:

pythonfrom django.http import HttpResponse
from datetime import datetime, timedelta

def set_expiring_cookie(request):
  response = HttpResponse("Cookie с датой истечения")
  expiry_date = datetime.now() + timedelta(days=1)
  response.set_signed_cookie(
    'expiring_cookie',
    'will_expire_tomorrow',
    expires=expiry_date
  )
  return response

Смотрите также

  • метод set_cookie,
    который устанавливает обычную cookie без подписи
  • метод delete_cookie,
    который удаляет cookie на клиенте
  • атрибут COOKIES,
    который содержит все полученные cookie
  • класс HttpResponse,
    который представляет HTTP-ответ