Как получить имя пользователя с токеном при помощи Django отдыха? - PullRequest
0 голосов
/ 19 апреля 2019

Я использую django Django = 2.1.7 и остальные фреймворки djangorestframework = 3.9.2 Это мой URL для входа в систему

path('rest-auth/login', include('rest_auth.urls')),

Когда я ввел имя пользователя и пароль, я получил токен от остальных API. Но я хочу, чтобы мои пользовательские данные, такие как имя, идентификатор и т. Д., Отображались в моих компонентах реагирования. Пожалуйста, помогите мне, как достичь. Я видел много ответов о StackOverflow, даже если официальная документация не является описательной https://www.django -rest-framework.org / api-guide / authentication / # tokenauthentication

Ответы [ 3 ]

1 голос
/ 20 апреля 2019

Упомянутый пакет дает нам возможность переопределить настройки

В процессе входа в систему ответ приходит либо TOKEN_SERIALIZER, либо JWT_SERIALIZER.В вашем случае я предполагаю, что вы не используете метод JWT .

Итак, создайте новый класс сериализатора согласно вашей желаемой структуре и подключите его, используяREST_AUTH_SERIALIZERS словарь настроек.

Вот один пример

#serializer.py
from django.contrib.auth import get_user_model
from rest_framework import serializers
from rest_framework.authtoken.models import Token


class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = get_user_model()
        fields = ('id', 'username', 'email')


class MyCustomTokenSerializer(serializers.ModelSerializer):
    user = UserSerializer(read_only=True)

    class Meta:
        model = Token
        fields = ('key', 'user')

и в вашем settings.py,

REST_AUTH_SERIALIZERS = {
    'TOKEN_SERIALIZER': 'path.to.custom.MyCustomTokenSerializer',
    ...
    ...
}
1 голос
/ 21 мая 2019

Если вы используете rest-auth, вы можете получить идентификатор, имя пользователя, адрес электронной почты, имя и фамилию зарегистрированного пользователя, используя этот URL: http://localhost:8000/rest-auth/user/

0 голосов
/ 19 апреля 2019

Невозможно автоматически заполнять пользовательские данные, когда пользователь входит в систему. Вы должны просто иметь возможность взять имя пользователя, введенное пользователем в процессе входа в систему, сохранить его в переменной и после получения токена сделать еще один вызов API получить информацию о пользователе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...