【问题标题】:how to send user it with access jwt token in drf如何在 drf 中使用访问 jwt 令牌向用户发送它
【发布时间】:2021-08-23 04:47:02
【问题描述】:

目前我在 django rest 框架中使用JWT 令牌,而使用login api,我只得到refresh tokenaccess token。我想知道是否也可以使用这些令牌发送用户 ID(我不知道是否可能)

目前

{
    "refresh": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTYyMjk3NzY2OCwianRpIjoiYWE2ZTk0NWNiYjRjNDAxZmFiMmM2NWEzZWQ1Yzg5NDUiLCJ1c2VyX2lkIjoxfQ.a54fcfa0ZsFrfVrb1VTdRO6bXY47NOuZqO8T1I3yKCc",
    "access": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjU0NDI3MjY4LCJqdGkiOiI1ODEwNDQyZWU3ZTM0MzczYTBkNmEzMDBkYmRmYTg2MyIsInVzZXJfaWQiOjF9.d6fmMq6ddsCaCyAEbDDaE5aja04LxYZmRP8WHfpmJqs"
}

我想要什么

{
    "refresh": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTYyMjk3NzY2OCwianRpIjoiYWE2ZTk0NWNiYjRjNDAxZmFiMmM2NWEzZWQ1Yzg5NDUiLCJ1c2VyX2lkIjoxfQ.a54fcfa0ZsFrfVrb1VTdRO6bXY47NOuZqO8T1I3yKCc",
    "access": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjU0NDI3MjY4LCJqdGkiOiI1ODEwNDQyZWU3ZTM0MzczYTBkNmEzMDBkYmRmYTg2MyIsInVzZXJfaWQiOjF9.d6fmMq6ddsCaCyAEbDDaE5aja04LxYZmRP8WHfpmJqs",
    "userid": <id>
}

【问题讨论】:

    标签: django django-rest-framework jwt


    【解决方案1】:

    如果你使用 django-rest-framework-simplejwt,这会很有帮助。编写您的自定义登录功能并将其添加到 url 路径中。

    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),
            'user': user
        }
    
    # in views.py
    def login(request):
        ...
        user = authenticate(email=email, password=password)
        if user is not None:
            user_id = User.objects.get(email=email)
            data = get_tokens_for_user(user_id)
            return Response(data, status=HTTP_200_OK)
    

    【讨论】:

      猜你喜欢
      • 2020-10-23
      • 1970-01-01
      • 2021-07-23
      • 2016-04-30
      • 2015-09-19
      • 2020-11-22
      • 2016-10-04
      • 2020-09-28
      • 2014-09-02
      相关资源
      最近更新 更多