Урок 40. Введение в аутентификацию и авторизацию
⚡ Кратко: аутентификация vs авторизация в DRF
Аутентификация — кто ты? (проверка учётных данных). Авторизация — что тебе можно? (проверка прав). В DRF они работают последовательно: сначала Authentication, затем Permissions.
- SessionAuthentication — через куки/сессии; для традиционных веб-приложений
- BasicAuthentication — логин/пароль в Base64 в каждом запросе; только с HTTPS
- TokenAuthentication — заголовок
Authorization: Token <key>; для REST/mobile - JWT (SimpleJWT) — самодостаточный токен;
Authorization: Bearer <token> - IsAuthenticated — доступ только для авторизованных; 401/403 иначе
Что запомнить: BasicAuthentication небезопасен без HTTPS. TokenAuthentication требует rest_framework.authtoken в INSTALLED_APPS и миграции.
Частая ошибка: забыть добавить rest_framework.authtoken в INSTALLED_APPS и выполнить python manage.py migrate перед использованием TokenAuthentication.
📖 О чём этот урок
Урок 40 открывает блок безопасности в курсе Python Advanced. Здесь разбираются фундаментальные понятия аутентификации и авторизации в Django REST Framework, а также четыре встроенных механизма аутентификации DRF.
Аутентификация и авторизация — обязательные компоненты любого реального API. DRF предоставляет гибкую систему: классы аутентификации и разрешений можно настраивать глобально или на уровне каждого представления.
Что изучим
- Разница между аутентификацией и авторизацией — концепции и порядок проверки
- SessionAuthentication — куки и сессии в Django-приложениях
- BasicAuthentication — HTTP Basic Auth с кодированием в Base64
- TokenAuthentication — токены DRF, модель Token, получение через Postman
- JWT-аутентификация через библиотеку Simple JWT — access/refresh токены
- Классы разрешений: IsAuthenticated, AllowAny, IsAdminUser и другие
- Глобальная настройка через DEFAULT_AUTHENTICATION_CLASSES / DEFAULT_PERMISSION_CLASSES
📚 Что повторить перед изучением
- ← Урок 39: Summary session 7 — повторение DRF-блока
- DRF: APIView, Generic Views, ViewSets — уроки 26, 29, 36
- HTTP-заголовки, методы GET/POST, коды ответов 401/403
- Django пользователи: модель User,
create_user(),create_superuser() - Сессии Django:
SESSION_ENGINE, механизм сессий в браузере
🎯 Что изучать дальше
- → Урок 41: Практикум 9 — практика аутентификации
- Custom permissions: создание своих классов разрешений
- Кастомизация JWT-токенов: дополнительные claims, кастомный сериализатор
- django-allauth / dj-rest-auth — готовые решения для регистрации/входа