Ключ API фреймворка Django rest не может аутентифицироваться при использовании пользовательских моделей
Я использую rest_framework_api_key для аутентификации сервисов, которые используют наш API, у меня следующие версии Django, Rest framework и rest_framework_api_key
Django==3.2.12
djangorestframework==3.13.1
djangorestframework-api-key==2.1.0
Мои установленные приложения в settings.py
INSTALLED_APPS = [
'django_extensions',
'django_elasticsearch_dsl',
'drf_yasg',
'media_fetchers',
'api_registration',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'rest_framework_api_key',
'corsheaders',
'admin_panel',
'accounts',
]
Классы разрешений по умолчанию
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework_api_key.permissions.HasAPIKey',
'rest_framework.permissions.IsAuthenticated',
],
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework_simplejwt.authentication.JWTAuthentication',
],
"TEST_REQUEST_DEFAULT_FORMAT": "json",
"DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.LimitOffsetPagination",
"PAGE_SIZE": 20,
}
Мои модели для использования модели APIKey
class Service(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="service")
name = models.CharField(max_length=128)
active = models.BooleanField(default=True)
class ServiceAPIKey(AbstractAPIKey):
organization = models.ForeignKey(
Service,
on_delete=models.CASCADE,
related_name="api_keys",
)
Я создал API, в котором permission_classes = [HasAPIKey], который не проходит аутентификацию и выдает ответ учетные данные не были предоставлены. Я передал ключ API в postman в заголовках, как указано в официальной документации Django rest API key
Короче говоря, когда я удаляю модели и использую их модель APIKey как есть, она действительно аутентифицируется с помощью HasAPIKey... Может я что-то делаю не так? Я также прочитал все проблемы на их github, ни у кого нет такой же проблемы, как у меня, но у людей есть проблемы при использовании modelviewsets api.