我使用
django rest框架和
djangorestframework-jwt包来创建JWT令牌以进行授权.
在前端,我可以解码令牌并获取用户名,电子邮件和user_id.但是,我想检索一些额外的信息.例如,如果我能获得我们的授权模型(用户模型)上的字段,那将非常方便.
我可以通过常规APIView单独请求获取用户信息.但是我想知道是否有可能在JWT体内添加一些额外的参数?
最佳答案 正如在
github issue中详述的那样,我通过从DRF-JWT子类化ObtainJSONWebToken类来完成此操作:
from rest_framework_jwt import views as jwt_views
from .serializers import UserSerializer
class UserLoginViewJWT(jwt_views.ObtainJSONWebToken):
user_serializer_class = UserSerializer
def post(self, request, *args, **kwargs):
response = super().post(request, *args, **kwargs)
if response.status_code == status.HTTP_200_OK:
user = get_user_model().objects.get(email=request.data[get_user_model().USERNAME_FIELD])
serialized_user = self.user_serializer_class(user)
response.data.update(serialized_user.data)
return response
注意:上面的代码可能缺少一些导入
来自@jpadilla的回复也指明了这一点
You can also do this with the JWT_RESPONSE_PAYLOAD_HANDLER setting.
07001