Аутентификация фреймворка Django REST не работает с представлением на основе классов
Я использую DRF (3.12.4) с SimpleJWT для аутентификации. Это работает с представлением на основе функций, но не работает с представлением на основе классов. Для представления на основе класса нет никакого эффекта и запрос проходит без аутентификации. Вот мое представление на основе функций
@api_view(['POST'])
@permission_classes([IsAuthenticated])
def test_function_view(request):
return JsonResponse({"message": "test ok"}, safe=False, status=200)
Вот мое представление, основанное на классах
class TestClassView(APIView):
authentication_classes = [JWTAuthentication]
permission_classes = [IsAuthenticated]
def post(request):
return JsonResponse({"message": "post ok"}, safe=False, status=200)
def get(request):
return JsonResponse({"message": "get ok"}, safe=False, status=200)
Настройки
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework_simplejwt.authentication.JWTAuthentication',
],
}
URLs
path('api/v1/agents/performancetest/testclass', TestClassView.post),
path('api/v1/agents/performancetest/testfunction', test_function_view),
В представлении, основанном на классе, аутентификация не имеет эффекта, поэтому при отправке GET запроса без аутентификации, он прошел, а для POST запроса, он получил ошибку CRSF из-за отсутствия аутентификации.
Forbidden (CSRF cookie not set.): /api/v1/agents/performancetest/testclass
HTTP POST /api/v1/agents/performancetest/testclass 403 [0.02, 127.0.0.1:59664]
HTTP GET /api/v1/agents/performancetest/testclass 200 [0.00, 127.0.0.1:59664]
Есть ли здесь что-то, что я упустил, или какая-нибудь подсказка? Спасибо.
class TestClassView(APIView):
authentication_classes = [JWTAuthentication]
permission_classes = [IsAuthenticated]
def post(self, request):
return JsonResponse({"message": "post ok"}, safe=False, status=200)
def get(self, request):
return JsonResponse({"message": "get ok"}, safe=False, status=200)
и проверьте, передаете ли вы jwt в вашем api запросе