【发布时间】:2021-09-09 05:30:41
【问题描述】:
我正在使用 ModelViewSet 开发 Django RF,我将在其中使用 JWT 令牌身份验证。我想使用默认的 django auth_user 模型而不是创建新的自定义用户模型。
#serializer.py
class MyTokenObtainPairSerializer(TokenObtainPairSerializer):
class Meta:
model = User
fields = ('username','first_name')
def validate(self, attrs):
data = super().validate(attrs)
refresh = self.get_token(self.user)
data['refresh'] = str(refresh)
data.pop('refresh', None) # remove refresh from the payload
data['access'] = str(refresh.access_token)
# Add extra responses here
data['username'] = self.user.username
data['first_name'] = self.user.first_name
data['last_name'] = self.user.last_name
return data
views.py
class TokenObtainPairView(TokenObtainPairView):
# Replace the serializer with your custom
serializer_class = MyTokenObtainPairSerializer
# token_obtain_pair = TokenObtainPairView.as_view()
class MyTokenObtainPairSerializer(TokenObtainPairSerializer):
class Meta:
model = User
fields = ('username','first_name')
@classmethod
def get_token(cls, user):
token = super().get_token(user)
token['username'] = user.username
token['first_name'] = user.first_name
return token
【问题讨论】:
标签: django-rest-framework django-rest-framework-simplejwt