📝 Практикум 9: задачи
⚡ Все задачи — кратко
Контекст: Реализуйте авторизацию тремя способами или выберите один для всего приложения. Расставьте по представлениям классы авторизации и разрешения.
- 1.1: Настройка BasicAuthentication в settings.py
- 1.2: Применение BasicAuthentication к ProductListCreateView
- 1.3: Получение доступа через Postman с заголовком Authorization: Basic
- 2.1: Настройка TokenAuthentication + authtoken + миграции
- 2.2: Маршрут obtain_auth_token в urls.py
- 2.3: Применение TokenAuthentication к ProductListCreateView
- 2.4: Получение доступа через Postman с заголовком Authorization: Token
- 3.1: Настройка JWTAuthentication (SimpleJWT) в settings.py
- 3.2: Маршруты TokenObtainPairView и TokenRefreshView в urls.py
- 3.3: Применение JWTAuthentication к OrderListCreateView
- 3.4: Получение доступа через Postman с заголовком Authorization: Bearer
- 4.1: IsAuthenticatedOrReadOnly для ProductDetailDetailUpdateDeleteView
- 4.2: IsAdminUser для SupplierViewSet
- 4.3: Настройка разрешений для остальных представлений
Задание 1: BasicAuthentication
Задание 1.1 — Настройка BasicAuthentication
Настройте базовую аутентификацию.
- Откройте файл
settings.py. - Добавьте
BasicAuthenticationв настройки.
Файл: settings.py
Задание 1.2 — Применение BasicAuthentication к представлению
Примените BasicAuthentication к существующему представлению для Product.
Файл: store/views.py
Задание 1.3 — Получение доступа с помощью BasicAuthentication
Попробуйте получить доступ к маршруту /products/ через Postman, передавая заголовок Authorization.
Инструкции:
- Используйте Postman для выполнения GET-запроса.
- Добавьте заголовок
Authorizationв форматеBasic base64encoded(username:password).
Задание 2: TokenAuthentication
Задание 2.1 — Настройка TokenAuthentication
Настройте аутентификацию с использованием токенов.
- Добавьте приложение
rest_framework.authtokenвINSTALLED_APPSвsettings.py. - Выполните миграции для создания таблицы токенов.
- Добавьте
TokenAuthenticationв настройки.
Файл: settings.py
Задание 2.2 — Получение токена
Настройте получение токена с использованием встроенного представления obtain_auth_token.
Файл: store/urls.py
Задание 2.3 — Применение TokenAuthentication к представлению
Примените TokenAuthentication к существующему представлению для Product.
Файл: store/views.py
Задание 2.4 — Получение доступа с помощью токена
Используйте полученный токен для доступа к защищённому маршруту /products/ через Postman, передавая заголовок Authorization в формате Token <your_token>.
Инструкции:
- Получите токен через маршрут
/api-token-auth/. - Используйте Postman для выполнения GET-запроса.
- Добавьте заголовок
Authorizationв форматеToken <your_token>.
Задание 3: JWT-аутентификация
Задание 3.1 — Настройка JWT-аутентификации
Настройте аутентификацию с использованием JWT.
- Установите пакет
djangorestframework-simplejwt. - Добавьте настройки для
JWTAuthentication.
Файл: settings.py
Задание 3.2 — Маршруты для JWT
Настройте маршруты для получения и обновления JWT.
Файл: store/urls.py
Задание 3.3 — Применение JWT-аутентификации к представлению
Примените JWTAuthentication к существующему представлению для Order.
Файл: store/views.py
Задание 3.4 — Получение доступа с помощью JWT
Используйте полученный JWT для доступа к защищённому маршруту /orders/ через Postman, передавая заголовок Authorization в формате Bearer <your_token>.
Инструкции:
- Получите JWT через маршрут
/api/token/. - Используйте Postman для выполнения GET-запроса.
- Добавьте заголовок
Authorizationв форматеBearer <your_token>.
Задание 4: Разрешения на уровне представления
Задание 4.1 — Использование IsAuthenticatedOrReadOnly
Настройте разрешения для представления ProductDetail, чтобы только аутентифицированные пользователи могли изменять данные.
Файл: store/views.py
Класс: ProductDetailDetailUpdateDeleteView
Задание 4.2 — Использование IsAdminUser
Настройте представление SupplierViewSet, чтобы только администраторы могли изменять данные.
Файл: store/views.py
Класс: SupplierViewSet
Задание 4.3 — Использование разрешений для остальных представлений
Настройте разрешения для остальных представлений, обсудив какие необходимо применить.