Skip to main content
 首页 » 编程设计

python之Django Rest Framework JWT之带有扩展用户的自定义负载

2025年05月04日29kerrycode

我有一个带有示例序列化程序的扩展用户(配置文件是扩展用户,而不是抽象用户)

 { 
    "id": 3, 
    "url": "http://localhost:8000/api/v1/users/demo/", 
    "username": "demo", 
    "first_name": "First", 
    "last_name": "Demo", 
    "profile": { 
        "gender": null, 
        "location": "Sa Pa", 
        "date_of_birth": null, 
        "job_title": null, 
        "phone_number": null, 
        "fax_number": "", 
        "website": "", 
        "intro": "", 
        "bio": "", 
        "interested_in": null, 
        "languages": null, 
        "quotes": null, 
        "nickname": null 
    } 
} 

如何使用所有上述字段自定义负载并使用axios获取它? 现在它只是获取有效负载:

authUser:Object 
email:"test@gmail.com" 
exp:1509183691 
user_id:1 
username:"First Demo" 
token:"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImxlY29uZ3RvYW4iLCJ1c2VyX2lkIjoxLCJlbWFpbCI6ImRyYWZ0bGlnb25ncXVhbjdAZ21haWwuY29tIiwiZXhwIjoxNTA5MTgzNjkxfQ.KSEp-7g-SGDbqfspedNwkT1rABFi0UQ45yKDJDTX2zA" 

我点击了这个链接:#145但不起作用 请帮助我!

请您参考如下方法:

这是我做的:

  • 创建您自己的 jwt_response_payload_handler:

    from your_serializers import UserSerializer 
     
    def jwt_response_payload_handler(token, user=None, request=None): 
        return { 
            'token': token, 
            'user': UserSerializer(user, context={'request':request}).data 
        } 
    
  • 将您的自定义响应负载处理程序放入您的 settings.py 文件中:

    JWT_AUTH = { 
        ...,                 
        'JWT_RESPONSE_PAYLOAD_HANDLER': 'path_to.jwt_response_payload_handler', 
        ... 
    } 
    

当您登录时,您将获得 token 和 user 以及您的序列化数据。