django rest authetication如何接收带有令牌的用户名?

时间:2019-04-19 18:24:36

标签: django python-3.x django-rest-framework authorization django-rest-auth

我正在使用django Django = 2.1.7和rest框架djangorestframework = 3.9.2这是我的登录网址

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

当我输入用户名和密码时,我从rest API获得了令牌。但是我希望我的用户详细信息(例如名称,ID等)显示在我的React组件中。请帮助我如何实现。即使官方文档不是描述性的https://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication

,我在StackOverflow上也看到了很多答案。

3 个答案:

答案 0 :(得分:1)

所提到的软件包使我们能够override the settings

在登录过程中,响应来自 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 :(得分:1)

如果您使用rest-auth,则可以使用以下URL获取登录用户的ID,用户名,电子邮件,名字和姓氏:http://localhost:8000/rest-auth/user/

答案 2 :(得分:-1)

一旦用户登录,便无法自动填充用户数据。您应该只能够采用用户在登录过程中输入的用户名,将其保存在变量中,并在收到令牌后进行另一个API调用。获取用户信息。