Django REST BasicAuthentication не применяется в качестве класса аутентификации по умолчанию
У меня есть проект django REST и я добавил
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.BasicAuthentication',
]
}
на setting.py
и я ожидаю, что BasicAuthentication
применяется ко всем страницам по умолчанию, но все еще не требует аутентификации для отображения содержимого. это странно. Должен ли я делать что-то, чего не делал?
urls.py:
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('blog_app.api.urls')),
path('api-auth/', include('rest_framework.urls'))
]
setting.py:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'blog_app',
]
blog_app/api/urls:
urlpatterns = [
path('articles/', ArticleListView.as_view()),
]
views.py:
class ArticleListView(generics.ListCreateAPIView):
queryset = Article.objects.all()
serializer_class = ArticleSerializer
Аутентификация - это не то же самое, что разрешение. Вам также потребуется добавить класс разрешения по умолчанию, если вы требуете, чтобы все пользователи проходили аутентификацию (используя один из методов аутентификации, которые вы хотите использовать):
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.BasicAuthentication',
],
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticated',
],
}
Кроме того, убедитесь, что вы тестируете правильное представление (/api/list/
). Ваш проект (как вы связали) имеет два StudentView
, один из которых является представлением DRF, а другой (/student/
) - нет. Последний не будет знать о конфигурации DRF.