【问题标题】:Django simplejwt: How to add refresh token to dict?Django simplejwt:如何将刷新令牌添加到 dict?
【发布时间】:2021-08-04 06:55:42
【问题描述】:

我正在使用 simplejwt 来获取访问和刷新令牌。在一个视图中,我需要创建一个字典,其中将存储两者以及访问令牌声明和另一个附加数据。一切正常,但由于某种原因,当将 refrsh 令牌添加到 dict 时,它返回其解码值,而不是令牌。

我的意见.py


@csrf_exempt
#@api_view(('GET',))
def check_token(request):
    token_refresh = RefreshToken.for_user(request.user)
    print('REFRESH', token_refresh)
    token = request.META.get('HTTP_AUTHORIZATION', " ").split(' ')[1]
    data = {'token': token, 'refresh_token': token_refresh}

    try:
        valid_data = TokenBackend(algorithm='HS256').decode(token, verify=False)
        data['uui'] = valid_data['user_id']
        data['validUntil'] = valid_data['exp']
        data['clientId'] = 'default'
        print(data)
        return JsonResponse(data)
    except ValidationError as v:
        print("Validation error", v)


print('REFRESH', token_refresh) 返回令牌:

'刷新 eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI...'

但数据对象返回:

{'token': 'eyJ0eXAiOiJKV1QiLCJhbGci...', 'refresh_token': {'token_type': 'refresh', 'exp': 1628664751, 'jti': '38f0e3a4d7bb452681834a6b149aa496', 'user_id': 'None'}, 'uui': 1, 'validUntil': 1628059131, 'clientId': 'default'}

我的理想结果:

{'token': 'eyJ0eXAiOiJKV1QiLCJhbGci...', 'refresh_token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI...', 'uui': 1, 'validUntil': 1628059131, 'clientId': 'default'}

【问题讨论】:

    标签: python django django-rest-framework-simplejwt


    【解决方案1】:

    如果您想为djangorestframework-simplejwt 中的用户手动创建令牌,您可以这样做:

    from rest_framework_simplejwt.tokens import RefreshToken
    
    def get_tokens_for_user(user):
        refresh = RefreshToken.for_user(user)
    
        return {
            'refresh': str(refresh),
            'access': str(refresh.access_token),
    
            # Add additional fields here
        }  
    

    现在您可以在视图中使用此功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-18
      • 2020-05-24
      • 2020-03-15
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      • 2021-10-28
      • 2016-08-13
      相关资源
      最近更新 更多