social_django扩展令牌有效负载-自定义声明

时间:2020-08-05 14:49:40

标签: django django-rest-framework google-oauth django-socialauth django-oauth

我正在为通过页面注册的用户使用简单的JWT,并自定义令牌的有效负载like stated here。我还将OAuth2 with social_django与google-oauth2结合使用。

登录OAuth2后,我正在从服务器获取响应

access: "ey...",
refresh: "ey...",​​
user: "user@gmail.com"

我想扩展访问令牌有效负载,以便在解码后获得更多信息。目前,我有有效载荷:

{
  "token_type": "access",
  "exp": number,
  "jti": "string",
  "user_id": 3
}

通过Google登录的用户获得的有效负载与通过Django注册创建的帐户登录的用户不同(由于我为simpleJWT进行了自定义)。

问题:是否可以强制social_django使用简单的JWT或自定义服务器令牌的有效载荷?

我试图使用AUTHENTICATION_BACKENDS并扩展BaseOAuth和GoogleOAuth类

class CustomBaseOAuth(BaseOAuth2):
    def extra_data(self, user, uid, response, details=None, *args, **kwargs):
        """Return access_token, token_type, and extra defined names to store in
            extra_data field"""
        data = super(BaseOAuth2, self).extra_data(user, uid, response,
                                                  details=details,
                                                  *args, **kwargs)
        data['uuid'] = str(user.unique_id.hex)
        return data

它可以工作,但是扩展的信息被卡在“数据库”字段中,所以我仍然被卡住,因为我希望将此信息返回到令牌的有效负载中。

感谢您提供任何线索。

0 个答案:

没有答案