当我注销时,我发现此错误“详细信息”:“未提供身份验证凭据。”

时间:2021-08-01 18:55:39

标签: django django-rest-framework django-rest-auth django-rest-knox

我正在使用 django-rest-knox,当我使用 knox_views.LogoutAllView.as_view() 注销时,它给了我这个错误:

"detail": "Authentication credentials were not provided." 

注意:我使用的是自定义用户模型(AbstarctUserBaseUserManager

这是serializers.py

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('id', 'username', 'email','birth_date','first_name','last_name')

# there is a registerserializer too

class LoginSerializer(serializers.Serializer):
    email = serializers.EmailField()
    password = serializers.CharField()

    def validate(self, data):
        user = authenticate(**data)
        if user and user.is_active:
            return user
        raise serializers.ValidationError("Incorrect Credentials")

这里是views.py

class LoginView(generics.GenericAPIView):
    serializer_class = LoginSerializer

    def post(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user= serializer.validated_data
        return Response({
            "user": UserSerializer(user, context=self.get_serializer_context()).data,
            "token": AuthToken.objects.create(user)[1]
        })

class RegisterAPI(generics.GenericAPIView):
    serializer_class = RegisterSerializer

    def post(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.save()
        return Response({
        "user": UserSerializer(user, context=self.get_serializer_context()).data,
        "token": AuthToken.objects.create(user)[1]
        })

1 个答案:

答案 0 :(得分:0)

来自docs

<块引用>

这个视图只接受一个空正文的 post 请求。 它响应 Knox 令牌身份验证。请求成功后,用于身份验证的令牌以及注册到同一用户帐户的所有其他令牌将从系统中删除,并且无法再用于身份验证。

这意味着您仍然需要使用您在通过注销端点进行身份验证时生成的令牌。

相关问题