I have a problem with JWT authentication using django-rest-knox.
Error is: Detail: Authentication credentials were not provided.
ENDPOINT: /api/auth/login/
Headers in the POST request to the endpoint:
{
Content-Type: application/json
}
body:
{
"username": "admin",
"password": 1234
}
Login API View:
class UserLoginAPIView(generics.GenericAPIView):
serializer_class = UserLoginSerializer
def post(self, request, *args, **kwargs):
data = request.data
serializer = self.get_serializer(data=data)
serializer.is_valid(raise_exception=True)
user = serializer.validated_data
token = AuthToken.objects.create(user)
return Response({
"user": UserSerializer(user,
context=self.get_serializer_context()).data,
"token": token
})
Serializer:
class UserLoginSerializer(serializers.Serializer):
username = serializers.CharField()
password = serializers.CharField()
def validate(self, data):
user = authenticate(**data)
if user and user.is_active:
return user
raise serializers.ValidationError("Invalid Credentials")
Default Settings:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'knox.auth.TokenAuthentication',
]
}