需求:需要返回的响应中包括id,username,token
1. 查看/rest_framework_simplejwt/settings.py:12源码,发现使用的TOKEN_OBTAIN_SERIALIZER控制输出,
2.找到这个类:发现返回的data里定义了“refresh"和“access"字段,所以重写该类,然后将settings.py里的使用到的规则指定我们重写的类规则即可
3. 重写类规则
from django.contrib.auth.models import update_last_login
from rest_framework_simplejwt.serializers import TokenObtainSerializer
from rest_framework_simplejwt.settings import api_settings
from rest_framework_simplejwt.tokens import RefreshToken
class TokenObtainPairSerializer(TokenObtainSerializer):
token_class = RefreshToken
def validate(self, attrs):
data = super().validate(attrs)
refresh = self.get_token(self.user)
# data["refresh"] = str(refresh)
data["token"] = str(refresh.access_token)
data['user_id'] = str(self.user.id)
data['user_name'] = str(self.user.username)
if api_settings.UPDATE_LAST_LOGIN:
update_last_login(None, self.user)
return data
4. settings.py中指定我们使用的规则即可
5. 验证
类视图中指定权限