Home > front end >  "detail": "Authentication credentials were not provided." to admin
"detail": "Authentication credentials were not provided." to admin

Time:02-04

I have my token for admin, the booking entries is allowed in Insomnia but would not be allowed DRF display. I am missing something please? Is there way to provide the token for it to be allowed?

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',
    ]
}

CodePudding user response:

enter image description hereSelect Headers Key will be Authorization and value will be like this

Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b

CodePudding user response:

I think you need to remove session authentication class because here you used token for authentication

I mean authentication classes overrides.

So, remove session authentication class only put token authentication class

But, you want to authenticate with browsable you need to remove token authentication and need to put session authentication class.

If you want authenticate with with token you need to POSTMAN or other third -party API testing tool which support token authentication and you need to remove session authentication and need to put token authentication class

settings for token authentication (test with Postman or other third -party API testing tool)

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',
    ]
}

settings for session authentication (test with browsable api which provides DRF built-in)

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',
    ]
}

CodePudding user response:

In my opinion you should delete this line of code

'rest_framework.authentication.SessionAuthentication'

Try it.

  • Related