🔖 Справочник: Auth/DRF

⚡ Шпаргалка по заголовкам и форматам

Метод Заголовок Authorization
BasicAuthenticationBasic base64(user:pass)
TokenAuthenticationToken <token_key>
JWTAuthenticationBearer <access_token>

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

# SimpleJWT
pip install djangorestframework-simplejwt

# django-filter (для DjangoFilterBackend)
pip install django-filter

Команды manage.py

# После добавления rest_framework.authtoken в INSTALLED_APPS
python manage.py migrate

# Создать суперпользователя для тестирования
python manage.py createsuperuser

# Запустить сервер
python manage.py runserver

Настройки settings.py — BasicAuthentication

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.BasicAuthentication',
    ],
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
    ],
}

Настройки settings.py — TokenAuthentication

INSTALLED_APPS = [
    # ...
    'rest_framework',
    'rest_framework.authtoken',
]

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication',
    ],
}

Настройки settings.py — JWTAuthentication

from datetime import timedelta

INSTALLED_APPS = [
    # ...
    'rest_framework_simplejwt',
]

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ],
}

SIMPLE_JWT = {
    'ACCESS_TOKEN_LIFETIME': timedelta(minutes=5),
    'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
}

URL-маршруты

# TokenAuthentication: получение токена
from rest_framework.authtoken.views import obtain_auth_token
urlpatterns = [
    path('api-token-auth/', obtain_auth_token, name='api_token_auth'),
]

# JWTAuthentication: получение и обновление
from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView
urlpatterns = [
    path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
    path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
]

Атрибуты в представлениях

from rest_framework.authentication import BasicAuthentication, TokenAuthentication
from rest_framework_simplejwt.authentication import JWTAuthentication
from rest_framework.permissions import (
    IsAuthenticated, IsAuthenticatedOrReadOnly, IsAdminUser
)

class MyView(ListCreateAPIView):
    authentication_classes = [TokenAuthentication]   # переопределяет глобальное
    permission_classes = [IsAuthenticated]

Форматы заголовков Authorization

Метод Формат Пример
BasicAuthentication Basic base64(user:pass) В Postman: вкладка Authorization → Basic Auth, ввести логин и пароль
TokenAuthentication Token <key> Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b
JWTAuthentication Bearer <access> Bearer eyJhbGci...

Классы разрешений — быстрая таблица

Класс Кто имеет доступ
AllowAnyВсе, включая анонимных
IsAuthenticatedТолько аутентифицированные
IsAuthenticatedOrReadOnlyGET — все; POST/PUT/DELETE — аутентифицированные
IsAdminUserТолько пользователи с is_staff=True
← К оглавлению урока    Примеры →