pythondjangodjango-rest-frameworkdjango-rest-framework-simplejwt

"Authentication details were not provided." Django jwt


I've created a view for getting details of the user's profile.

user_views.py

@api_view(['GET']) 
@permission_classes([IsAuthenticated]) 
def getUserProfile(request): 
    user = request.user 
     serializer = UserSerializer(user, many=False) 
    return Response(serializer.data)

urls.py

urlpatterns = [
    path("/users/profile/", uv.getUserProfile, name="get-user-profile")
]

serializers.py

class UserSerializer(serializers.ModelSerializer): 
     name = serializers.SerializerMethodField(read_only=True) 
     isAdmin = serializers.SerializerMethodField(read_only=True) 
  
     class Meta: 
         model = User 
         fields = ['id', 'username', 'email', 'name', 'isAdmin'] 
  
     def get_id(self, obj): 
         return obj.id 
  
     def get_isAdmin(self, obj): 
         return obj.is_staff 
  
     def get_name(self, obj): 
         name = obj.first_name 
         if name == '': 
             name = obj.email 
  
         return name 
  
  
 class UserSerializerWithToken(UserSerializer): 
     token = serializers.SerializerMethodField(read_only=True) 
  
     class Meta: 
         model = User 
         fields = ['id', 'username', 'email', 'name', 'isAdmin', 'token'] 
  
     def get_token(self, obj): 
         token = RefreshToken.for_user(obj) 
         return str(token.access_token)

I'm sending a get request through post man and sending a authorization header with Bearer <token>. And got

{
    "detail": "Authentication details were not provided."
}

Using django-rest-framework and django-rest-framework-simplejwt.


Solution

  • Figured it out like after a bit. Needed to add

    REST_FRAMEWORK = {
        'DEFAULT_AUTHENTICATION_CLASSES': [
            'rest_framework_simplejwt.authentication.JWTAuthentication',
        ],
    }
    

    to settings.py