首页 文章

如何自定义JWT响应的有效负载部分

提问于
浏览
2

我需要做什么来自定义 url(r'^auth/login/', obtain_jwt_token) 视图以允许我将数据添加到JWT令牌

我有一个独立的Web应用程序使用的django-rest-framework API . 我想要的是返回登录用户的角色和权限以及djangorestframework-jwt已经返回的Web应用程序 .

我已经在python字典中有角色,但我无法弄清楚覆盖默认有效负载需要什么 .

user_payload = {'user':user,'roles':roles}

我认为这与使用我的user_payload替换 payload = jwt_payload_handler(user) 中的'user'一样简单,但后来却遇到了序列化错误 . 有更清洁/更简单的方法吗?

djangorestframework == 3.4.7,djangorestframework-jwt == 1.8.0

1 回答

  • 2

    JWT_RESPONSE_PAYLOAD_HANDLER 负责控制登录或刷新后返回的响应数据 . 覆盖以返回自定义响应,例如包括用户的序列化表示 .

    默认返回JWT令牌 .

    例:

    def jwt_response_payload_handler(token, user=None, request=None):
        return {
            'token': token,
            'user': UserSerializer(user).data
        }
    

    默认为 {'token': token}

相关问题