"detail": "Учетные данные для аутентификации не были предоставлены." для admin

У меня есть мой токен для администратора, бронирование записей разрешено в Insomnia, но не будет разрешено отображение DRF. Я что-то упускаю, пожалуйста? Есть ли способ предоставить токен, чтобы он был разрешен?

enter image description here

enter image description here

#view.py

from django.shortcuts import render, redirect
from django.contrib.auth.models import User
from rest_framework import viewsets
from .models import Booking, Menu
from .serializers import BookingSerializer, MenuSerializer, UserSerializer
from rest_framework.permissions import IsAuthenticated
from rest_framework.authentication import TokenAuthentication
from rest_framework import generics
from datetime import datetime
from django.views.decorators.csrf import csrf_exempt
from django.db.models import Sum
from django.contrib import messages



def home(request):
    return render(request, 'index.html')

def about(request):
    return render(request, 'about.html')


class UserRegistrationView(generics.CreateAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer


class BookingViewSet(viewsets.ModelViewSet):
    queryset = Booking.objects.all()
    serializer_class = BookingSerializer
    permission_classes = [IsAuthenticated]
    authentication_classes = [TokenAuthentication]

settings.py

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': [
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',
    ],
    'DEFAULT_AUTHENTICATION_CLASS': (
        'rest_framework.authentication.TokenAuthentication',
        'rest_framework.authentication.SessionAuthentication'
    ),
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
    ]
}

enter image description hereВыбираем заголовки Ключ будет Авторизация и значение будет таким

Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b

Думаю, вам нужно удалить класс аутентификации session, потому что здесь вы использовали токен для аутентификации

Я имею в виду переопределения классов аутентификации.

Итак, удалите класс аутентификации сеанса и поставьте класс аутентификации токена

Но, если вы хотите аутентифицироваться с помощью browsable, вам нужно удалить аутентификацию токена и поставить класс аутентификации сессии.

Если вы хотите аутентифицироваться с помощью токена, вам нужно использовать POSTMAN или другой сторонний инструмент тестирования API, который поддерживает аутентификацию с помощью токена. и вам нужно удалить аутентификацию сессии и поставить класс аутентификации токена

настройки для аутентификации токенов (проверьте с помощью Postman или другого стороннего инструмента тестирования API)

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': [
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',
    ],
    'DEFAULT_AUTHENTICATION_CLASS': (
        'rest_framework.authentication.TokenAuthentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
    ]
}

настройки для аутентификации сеанса (тест с просматриваемым api, который предоставляет встроенную DRF)

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': [
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',
    ],
    'DEFAULT_AUTHENTICATION_CLASS': (
        'rest_framework.authentication.SessionAuthentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
    ]
}

По моему мнению, вам следует удалить эту строку кода

'rest_framework.authentication.SessionAuthentication'

Попробуйте.

Вернуться на верх