Я создал аутентификацию входа в систему в Rest Api - PullRequest
0 голосов
/ 31 октября 2019

Я создал аутентификацию входа в систему в Rest Api. Получает ключ токена в почтальоне. Прямо сейчас мне нужно имя пользователя человека, связанного с ключом токена.

как это сделать?

# views.py
class LoginView(APIView):

    def post(self, request):

        serializer = LoginSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.validated_data["user"]
        django_login(request, user)
        token, created = Token.objects.get_or_create(user=user)
        return Response({"token": token.key }, status=200)


# serializers.py
class LoginSerializer(serializers.Serializer):
        username = serializers.CharField()
        password = serializers.CharField()

        def validate(self, data):
            username = data.get("username", "")
            password = data.get("password", "")

            if username and password:
                user = authenticate(username=username, password=password)
                if user:
                    if user.is_active:
                        data["user"] = user
                    else:
                        msg = "User is deactivated."
                        raise exceptions.ValidationError(msg)
                else:
                    msg = "Unable to login with given credentials."
                    raise exceptions.ValidationError(msg)
            else:
                msg = "Must provide username and password both."
                raise exceptions.ValidationError(msg)
            return data

1 Ответ

1 голос
/ 31 октября 2019

После аутентификации при входе в систему метод (метод аутентификации) вернет пользователя, поэтому вы можете получить пользовательские данные следующим образом:

username = user.username

Пример:

class LoginView (APIView):

def post(self, request):

    serializer = LoginSerializer(data=request.data)
    serializer.is_valid(raise_exception=True)
    user = serializer.validated_data["user"]
    django_login(request, user)
    token, created = Token.objects.get_or_create(user=user)
    return Response({"token": token.key , "username":user.username},status=200)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...