我只想在登录响应中提供用户详细信息,
目前,我正在获得JWT
'token'
登录API 响应。'refresh'
http://127.0.0.1:8000/auth/jwt/create/
我想返回登录用户详细信息
这是 的响应快照jwt/create/
,
我只想在登录响应中提供用户详细信息,
目前,我正在获得JWT
'token'
登录API 响应。'refresh'
http://127.0.0.1:8000/auth/jwt/create/
我想返回登录用户详细信息
这是 的响应快照jwt/create/
,
由于 djoser 在内部使用django-rest-framework-simplejwt,因此您必须调用自定义视图而不是 TokenObtainPairView 才能在 api 响应中添加用户的详细信息。您可以通过以下步骤实现此目的:
your_app/urls.py
您必须创建自己的自定义 url 才能自定义 JWT Create API 的响应。在“djoser.urls”路径上方添加以下 url 路径,以便调用此 url 而不是 djoser 的包 jwt/create url。
from your_app.views import CustomTokenObtainPairView
urlpatterns = [
...
path('auth/jwt/token/', CustomTokenObtainPairView.as_view(), name='custom_token_obtain_pair'),
]
your_app/views.py
现在添加您的自定义视图类及其相应的序列化程序类,您可以在其中为您的 api 响应添加用户属性。
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer
from rest_framework_simplejwt.views import TokenObtainPairView
class CustomTokenObtainPairSerializer(TokenObtainPairSerializer):
def validate(self, attrs):
## This data variable will contain refresh and access tokens
data = super().validate(attrs)
## You can add more User model's attributes like username,email etc. in the data dictionary like this.
data['user_name'] = self.user.username
return data
class CustomTokenObtainPairView(TokenObtainPairView):
serializer_class = CustomTokenObtainPairSerializer