Django + Django Rest Framework 实践django-rest-frameworkdjango-rest-framework开发

自定义 Django SimpleJWT 的返回值

2019-04-26  本文已影响1人  思考的虫子

Customizing JWT response from django-rest-framework-simplejwt

添加字段到 rest-auth/login 的返回值

Customized Response
  1. Override the validate method in TokenObtainPairSerializer
# project/views.py

from rest_framework_simplejwt.serializers import TokenObtainPairSerializer
from rest_framework_simplejwt.views import TokenObtainPairView


class MyTokenObtainPairSerializer(TokenObtainPairSerializer):
    def validate(self, attrs):
        data = super().validate(attrs)
        refresh = self.get_token(self.user)
        data['refresh'] = str(refresh)
        data['access'] = str(refresh.access_token)

        # Add extra responses here
        data['username'] = self.user.username
        data['groups'] = self.user.groups.values_list('name', flat=True)
        return data


class MyTokenObtainPairView(TokenObtainPairView):
    serializer_class = MyTokenObtainPairSerializer
  1. replace the login view with customized view
# project/urls.py

from .views import MyTokenObtainPairView

urlpatterns = [
    # path('token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
    path('token/', MyTokenObtainPairView.as_view(), name='token_obtain_pair'),
]

🔚

References
SimpleJWT Readme
source code as below:

Source code
上一篇 下一篇

猜你喜欢

热点阅读