Django-rest-framework с django OAuth 2.0 дает ошибку аутентификации

Я интегрировал django-rest-framework с django-oauth-toolkit. И это дает мне {"detail": "Authentication credentials were not provided."} с неаутентифицированным apis.

Вот мой settings.py

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'oauth2_provider.contrib.rest_framework.OAuth2Authentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    )
}

views.py

from rest_framework.views import APIView
from rest_framework.response import Response


class SignUpView(APIView):
    """
        Signup for the user.
    """
    def get(self, request):
        return Response({'result': True, 'message': 'User registered successfully.'})

urls.py

from django.urls import path
from myapp.views import SignUpView

urlpatterns = [
    path('signup/', SignUpView.as_view()),

]

1 ответ

Решение

Для регистрации пользователя вам не требуется никакой аутентификации. Так что вам нужно написать свою точку зрения, как это.

class SignUpView(APIView):
    """
        Signup for the user.
    """
    authentication_classes = ()
    permission_classes = ()

    def get(self, request):
        return Response({'result': True, 'message': 'User registered successfully.'})

Для всех остальных запросов вам нужно передать токен аутентификации в заголовок. В этом случае вам не нужно будет упоминать классы аутентификации и разрешений, так как будут использоваться ваши классы по умолчанию.

Другие вопросы по тегам