简体   繁体   English

如何在 drf 中通过访问 jwt 令牌向用户发送它

[英]how to send user it with access jwt token in drf

Currently I'm using JWT token in django rest framework, while using login api, i just get refresh token & access token .目前我在 django rest 框架中使用JWT令牌,同时使用login Z8A5DA52ED126447D359E70C07 令牌和access token ,只需refresh token I'm wondring if could send the user id with these tokens too(i have no idea on if it's possible or not)我想知道是否也可以使用这些令牌发送用户 ID(我不知道是否可能)

currently目前

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

what i want我想要的是

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

if you using django-rest-framework-simplejwt, this can helpful.如果您使用 django-rest-framework-simplejwt,这可能会有所帮助。 write your custom login function and add it in url path.编写您的自定义登录 function 并将其添加到 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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM