TokenAuthentication, а для stateless API часто применяют JWT через стороннюю библиотеку, например djangorestframework-simplejwt.
TokenAuthentication, а для stateless API часто применяют JWT через стороннюю библиотеку, например djangorestframework-simplejwt.
TokenAuthentication
Встроенный TokenAuthentication DRF хранит токен в базе данных. Нужно добавить rest_framework.authtoken в INSTALLED_APPS, применить миграции и подключить класс аутентификации.
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
],
}Клиент обычно передаёт токен в HTTP-заголовке Authorization: Token <token>.
JWT
JWT обычно реализуют через пакет djangorestframework-simplejwt. После подключения в настройках указывают JWTAuthentication и добавляют endpoints для выдачи и обновления токенов.
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework_simplejwt.authentication.JWTAuthentication',
],
}from django.urls import path
from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView
urlpatterns = [
path('api/token/', TokenObtainPairView.as_view()),
path('api/token/refresh/', TokenRefreshView.as_view()),
]JWT обычно передают как Authorization: Bearer <access_token>.
Безопасность
Нужно использовать HTTPS, ограничивать срок жизни access token, продумать обновление и отзыв токенов, а также не хранить секреты в коде. Authentication определяет пользователя, а права доступа дополнительно задают через permission classes.
Как ответить на собеседовании
Для простого API можно использовать встроенный TokenAuthentication DRF. Для stateless API чаще настраивают JWT, например через Simple JWT: подключают JWTAuthentication, endpoints выдачи и обновления токенов, а доступ к ресурсам ограничивают permissions.
Оцени свой прогресс