jwt定制返回格式
定制返回格式
目标如下:
想要返回如下格式数据:
{ code:100, msg:'登录成功', username:'登录用户名字', access:asdfasdf.asdfasdf.asdfasdf refresh:asdfas.ere.we }
第一步:新建一个序列化类文件,以serializer.py为例
第二步:书写序列化类 以MyTokenObtainPairSerializer为例,并重写validate(全局钩子)方法
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer from rest_framework_simplejwt.views import TokenObtainPairView class MyTokenObtainPairSerializer(TokenObtainPairSerializer): # 往荷载中加东西 @classmethod def get_token(cls, user): # user就是登录成功,查到的用户 token = super().get_token(user) # 签发token token['name'] = user.username # 往荷载中加用户名 return token def validate(self, attrs): old_data = super().validate(attrs) data = {'code': 100, 'msg': '登录成功', 'username': self.user.username, 'refresh': old_data['refresh'], 'access': old_data['access'] } return data
类方法:get_token 返回的token内 就是荷载的内容
第三步:settings文件配置
SIMPLE_JWT = { "TOKEN_OBTAIN_SERIALIZER": "app01.serializer.MyTokenObtainPairSerializer", }