📝 Задания — Урок 44

← К оглавлению урока

⚡ Задания урока (5 вопросов)

Вопросы из лекции для проверки понимания темы. Ответы — в Решениях.

Задания для закрепления

Вопросы из лекции — выберите один правильный ответ для каждого вопроса. Ответы с объяснениями — в разделе Решения.

Попробуйте ответить на все вопросы самостоятельно, прежде чем смотреть решения. Уделите особое внимание вопросам 2 и 3 — они касаются ключевых механизмов middleware.

Вопрос 1

Что делает метод set_cookie объекта Response?

  1. Удаляет токены из куки.
  2. Сохраняет токены в куки.
  3. Обновляет токены в базе данных.
  4. Проверяет срок действия токена.

Вопрос 2

Как реализуется автоматическое использование JWT токенов из куки в запросах?

  1. Использование формы для ручного ввода токенов в каждом запросе.
  2. Создание middleware для извлечения токенов из куки и добавления их в заголовок Authorization.
  3. Запрос токенов в каждом запросе через базовую аутентификацию.
  4. Хранение токенов в локальном хранилище браузера.

Вопрос 3

Что происходит, если токен доступа истекает при использовании middleware для JWT?

  1. Токен доступа обновляется с использованием токена обновления, если он доступен и действителен.
  2. Пользователь перенаправляется на страницу логина.
  3. Токен доступа автоматически удаляется.
  4. Запросы продолжаются без аутентификации.

Вопрос 4

Какое преимущество использования RefreshToken в JWT?

  1. Устраняет необходимость в токенах доступа.
  2. Позволяет обновлять токен доступа без повторной аутентификации пользователя.
  3. Позволяет хранить информацию о сессии на сервере.
  4. Обеспечивает постоянное обновление данных о пользователе.

Вопрос 5

Что делает delete_cookie объекта Response?

  1. Обновляет срок действия куки.
  2. Удаляет токены из куки.
  3. Обновляет токены доступа и обновления.
  4. Проверяет валидность токенов.

→ Посмотреть ответы

Дополнительные задания (практика)

Задание A: Расширить RegisterSerializer

Добавьте в RegisterSerializer:

  • Валидацию уникальности email
  • Проверку минимальной длины пароля (8 символов)
  • Поле password_confirm с проверкой совпадения паролей

Задание B: Улучшить LogoutView

Реализуйте LogoutView, который:

  • Помещает refresh-токен из куки в blacklist перед удалением
  • Корректно обрабатывает случай, если токен уже истёк (не падает с исключением)

Задание C: Кастомный payload

Добавьте в JWT-токен дополнительные поля: email и is_staff пользователя.

Подсказка: переопределите метод get_token в кастомном классе, наследующем от TokenObtainPairSerializer.