🔖 Справочник: Auth, JWT, Signals, Email, Swagger

🎯 Итоговый справочник блока Auth К оглавлению урока

⚡ Ключевые команды и классы

  • pip install djangorestframework-simplejwt — SimpleJWT
  • pip install drf-yasg — Swagger
  • python manage.py migrate — миграции authtoken / blacklist
  • Token.objects.get_or_create(user=user) — создать/получить токен
  • RefreshToken.for_user(user) — создать JWT пару
  • request.user — текущий пользователь
  • @receiver(post_save, sender=User) — обработчик сигнала
  • send_mail(subject, body, from_email, recipient_list) — отправить письмо

Установка пакетов

КомандаНазначение
pip install djangorestframework-simplejwtJWT-аутентификация
pip install drf-yasgSwagger/Redoc документация
pip install djangorestframeworkDRF (если не установлен)

Аутентификация — основные настройки

КлассЗаголовок запросаКогда использовать
SessionAuthenticationCookie + CSRFWeb-приложения Django
BasicAuthenticationAuthorization: Basic <base64>Тестирование / разработка
TokenAuthenticationAuthorization: Token <key>Простые мобильные/SPA
JWTAuthenticationAuthorization: Bearer <token>Scalable API, stateless

Разрешения

КлассДоступОтвет при отказе
AllowAnyВсе
IsAuthenticatedАутентифицированные401
IsAdminUseris_staff=True403
IsAuthenticatedOrReadOnlyЗапись — авт.; чтение — все401/403
DjangoModelPermissionsПо правам модели Django403

Методы BasePermission

МетодНазначениеВозвращает
has_permission(request, view)Уровень представленияTrue/False
has_object_permission(request, view, obj)Уровень конкретного объектаTrue/False

SimpleJWT — настройки SIMPLE_JWT

КлючОписаниеПо умолчанию
ACCESS_TOKEN_LIFETIMEСрок действия access-токенаtimedelta(minutes=5)
REFRESH_TOKEN_LIFETIMEСрок действия refresh-токенаtimedelta(days=1)
ROTATE_REFRESH_TOKENSРотация refresh при обновленииFalse
BLACKLIST_AFTER_ROTATIONСтарый refresh → blacklistFalse
AUTH_HEADER_TYPESТип заголовка('Bearer',)

SimpleJWT — эндпоинты

URLViewНазначение
api/token/TokenObtainPairViewPOST логин → access + refresh
api/token/refresh/TokenRefreshViewPOST refresh → новый access
api/token/verify/TokenVerifyViewPOST token → проверка валидности

Сигналы Django

СигналАргументыКогда
pre_savesender, instance, raw, using, update_fieldsДо save()
post_save+ created (bool)После save()
pre_deletesender, instance, usingДо delete()
post_deletesender, instance, usingПосле delete()
m2m_changedaction, instance, model, pk_set, usingПри изменении M2M

Регистрация сигналов

СпособСинтаксис
Декоратор @receiver@receiver(post_save, sender=Model)
Метод .connect()signal.connect(handler_func, sender=Model)

Email — backend

BackendОписание
django.core.mail.backends.console.EmailBackendПисьмо → консоль (разработка)
django.core.mail.backends.smtp.EmailBackendРеальный SMTP (продакшн)
django.core.mail.backends.dummy.EmailBackendТихо игнорирует (тесты)

Swagger (drf-yasg)

URLОписание
/swagger/Swagger UI — интерактивная документация
/redoc/Redoc — альтернативный UI документации
/swagger.jsonСхема в формате JSON
/swagger.yamlСхема в формате YAML