“” non_field_errors“:[”无法使用提供的凭据登录。具有自定义用户模型的令牌身份验证

时间:2019-09-18 11:31:22

标签: authentication django-rest-framework token

我正在创建一个端点,在该端点中,用户输入电话号码并可以在请求中使用令牌登录,但是它总是返回该错误

  

“ non_field_errors”:[           “无法使用提供的凭据登录。”

请注意,我正在使用自定义用户模型继承自Abstract baseUser

我需要知道如何解决此问题...  提前致谢 这是我的代码:

serializers.py

--set aws.subnets="{subnet-123456,subnet-654321}"

views.py:


class TokenSerializer(serializers.Serializer):
    phone_number = serializers.CharField(required=True, allow_blank=False)
    def validate(self, attrs,):

        phone_number = attrs.get('phone_number')

        if phone_number:
            user = authenticate(request=self.context.get('request'),
                                phone_number=phone_number)
            if not user:
                msg = _('Unable to log in with provided credentials.')
                raise serializers.ValidationError(msg, code='authorization')
        else:
            msg = _('Must include "Phone number.')
            raise serializers.ValidationError(msg, code='authorization')

        attrs['user'] = user
        return attrs

settings.py:

class TokenView(APIView):
    serializer_class=TokenSerializer
    def post(self, request, *args, **kwargs):
        serializer = self.serializer_class(data=request.data,
                                           context={'request': request})
        serializer.is_valid(raise_exception=True)
        user = serializer.validated_data['user']
        token, created = Token.objects.get_or_create(user=user)
        login(request,user)
        return Response({
        'token': token.key,
        'user_id': user.pk,
        'phone': user.phone_number
        })

感谢您的帮助

0 个答案:

没有答案