如何通过 django rest 身份验证接收带有令牌的用户名?
how to receive username with token by django rest authetication?
我正在使用 Django Django=2.1.7 和休息框架 djangorestframework=3.9.2 这是我的url 登录
path('rest-auth/login', include('rest_auth.urls')),
当我输入用户名和密码时,我从 rest API 获得了令牌。但我希望我的用户详细信息(如名称、ID 等)显示在我的 React 组件中。请帮助我如何实现。我在 Whosebug 上看到了很多答案,即使官方文档没有描述性 https://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication
无法在用户登录后自动填充用户数据。您应该能够获取用户在登录过程中输入的用户名,将其保存在一个变量中,并在收到令牌后制作另一个API调用获取用户信息。
提到的包使我们能够override the settings
在登录过程中,响应来自 TOKEN_SERIALIZER
或 JWT_SERIALIZER
。在您的情况下,我假设您没有使用 JWT 方法。
因此,根据您想要的结构创建一个新的序列化器 class 并使用 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',
...
...
}
如果您使用 rest-auth,您可以使用此 URL 获取登录用户的 ID、用户名、电子邮件、first_name 和 last_name:http://localhost:8000/rest-auth/user/
我正在使用 Django Django=2.1.7 和休息框架 djangorestframework=3.9.2 这是我的url 登录
path('rest-auth/login', include('rest_auth.urls')),
当我输入用户名和密码时,我从 rest API 获得了令牌。但我希望我的用户详细信息(如名称、ID 等)显示在我的 React 组件中。请帮助我如何实现。我在 Whosebug 上看到了很多答案,即使官方文档没有描述性 https://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication
无法在用户登录后自动填充用户数据。您应该能够获取用户在登录过程中输入的用户名,将其保存在一个变量中,并在收到令牌后制作另一个API调用获取用户信息。
提到的包使我们能够override the settings
在登录过程中,响应来自 TOKEN_SERIALIZER
或 JWT_SERIALIZER
。在您的情况下,我假设您没有使用 JWT 方法。
因此,根据您想要的结构创建一个新的序列化器 class 并使用 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',
...
...
}
如果您使用 rest-auth,您可以使用此 URL 获取登录用户的 ID、用户名、电子邮件、first_name 和 last_name:http://localhost:8000/rest-auth/user/