使用jwt身份验证登录不起作用

时间:2019-07-30 12:04:56

标签: django django-rest-framework

我尝试使用jwt身份验证创建用户登录api,但始终不会返回未授权的令牌,而不是返回令牌。该代码似乎在初始阶段较早就可以工作,但现在却不起作用。我不知道怎么了。我在settings.py中添加了jWT_AUTH和Authentication类。请帮助

序列化器

  class UserLoginSerializer(serializers.ModelSerializer):
    username = serializers.CharField()
    password = serializers.CharField()
    class Meta :
        model = User
        fields = ('username','password')

  class TokenSerializer(serializers.Serializer):
    token = serializers.CharField(max_length=255)

观看次数

 from django.contrib.auth.models import User
 from django.contrib.auth import authenticate, login
 from rest_framework_jwt.settings import api_settings

 jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
 jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER

class LoginView(generics.CreateAPIView):

    permission_classes = (permissions.AllowAny,)
    serializer_class = UserLoginSerializer
    queryset = User.objects.all()

    def post(self, request, *args, **kwargs):
        username = request.data.get("username", "")
        password = request.data.get("password", "")
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            serializer = TokenSerializer(data={
            "token": jwt_encode_handler(
                jwt_payload_handler(user)
            )})
            if serializer.is_valid():
                return Response(serializer.data['token'])
    return Response("Not Authorized",status=status.HTTP_401_UNAUTHORIZED)

即使我使用正确的用户名和密码也无法登录。

0 个答案:

没有答案