【发布时间】:2019-07-29 17:13:43
【问题描述】:
我在使用 django-rest-knox 进行 JWT 身份验证时遇到问题。
错误是: Detail: Authentication credentials were not provided.
端点: /api/auth/login/
发往端点的 POST 请求中的标头:
{
Content-Type: application/json
}
正文:
{
"username": "admin",
"password": 1234
}
登录 API 视图:
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
})
序列化器:
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")
默认设置:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'knox.auth.TokenAuthentication',
]
}
【问题讨论】:
标签: python django api django-rest-framework