0

我只想在登录响应中提供用户详细信息,

目前,我正在获得JWT 'token'登录API 响应。'refresh'http://127.0.0.1:8000/auth/jwt/create/

我想返回登录用户详细信息

这是 的响应快照jwt/create/

智威汤逊响应图片

4

1 回答 1

6

由于 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
于 2019-11-17T17:44:12.940 回答