【问题标题】:How to customize the payload section of the JWT response如何自定义 JWT 响应的有效负载部分
【发布时间】:2017-02-17 23:05:39
【问题描述】:

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

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

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

user_payload = {'user': 用户,'roles': 角色}

我认为这就像用我的 user_payload 替换 payload = jwt_payload_handler(user) 中的“用户”一样简单,但随后出现序列化程序错误。有更清洁/更简单的方法吗?

djangorestframework==3.4.7, djangorestframework-jwt==1.8.0

【问题讨论】:

    标签: django django-rest-framework jwt


    【解决方案1】:

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

    默认返回 JWT 令牌。

    例子:

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

    默认为{'token': token}

    【讨论】:

    • 这很好并且有效。但是,我如何能够将“内容”添加到令牌本身?我希望能够“操纵”令牌的私有部分,以便当网络应用稍后向我发送令牌时,我从令牌中获取信息,而不是重新从数据库中获取它。..
    • 我认为JWT_PAYLOAD_HANDLER 设置适用于这种情况。根据文档,它说你可以Specify a custom function to generate the token payload
    猜你喜欢
    • 2020-06-27
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 2018-04-11
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    相关资源
    最近更新 更多