从 JWT Token、Python 获取用户名和照片

Posted

技术标签:

【中文标题】从 JWT Token、Python 获取用户名和照片【英文标题】:Get Username and Photo from JWT Token, Python 【发布时间】:2018-11-23 16:22:11 【问题描述】:

我正在尝试创建一个 api 调用,该调用将返回登录个人的用户名及其照片。我正在通过应用程序登录并尝试在用户登录时触发该 api 调用。

我正在使用 rest_framework_simplejwt 登录并分配一个令牌,然后通过应用程序返回该令牌以用于访问各种 api 调用中的数据。

现在 这是我目前所拥有的:

url(r'^api/token/$', TokenObtainPairView.as_view(), name='token_obtain_pair'),

一旦验证发生并且用户得到一个令牌,我将启动这个 api 调用。

API 调用:

@csrf_exempt
def current_user(request):

    if request.method == 'POST':

        driver = JWTAuthentication().authenticate(request)[0].driver

    driverInfo = request.user.get_full_name()
    return JsonResponse("success": driverInfo)

这是我的序列化程序:

from rest_framework_simplejwt.serializers import TokenObtainPairSerializer
from rest_framework_simplejwt.views import TokenObtainPairView

class MyTokenObtainPairSerializer(TokenObtainPairSerializer):
    @classmethod
    def get_token(cls, user):
        token = super(MyTokenObtainPairSerializer, cls).get_token(user)

        # Add custom claims
        token['name'] = user.name
        # ...

        return token

class MyTokenObtainPairView(TokenObtainPairView):
    serializer_class = MyTokenObtainPairSerializer

它只返回令牌,没有别的。任何帮助将不胜感激

【问题讨论】:

【参考方案1】:

您可以自定义您的 Django REST Framework JWT 响应,

如果您使用来自 getblimp 的 JWT 插件进行 DRF, 请参阅其文档 [1]

DRF 的 JWT 插件有额外的设置,键为 JWT_RESPONSE_PAYLOAD_HANDLER

所以你在 settings.py 中添加 JWT_AUTH 配置并声明你想要用作 JWT 响应负载处理程序的函数。

文档中有一个通过 UserSerializer 提供的用户信息示例。

[1]http://getblimp.github.io/django-rest-framework-jwt/

【讨论】:

以上是关于从 JWT Token、Python 获取用户名和照片的主要内容,如果未能解决你的问题,请参考以下文章

jwt的token怎么生存的

如何验证 Microsoft jwt id_token?

Laravel,如何从自定义表的 jwt 令牌获取登录用户

jwt 无状态分布式授权

如何从标头中正确获取 jwt 令牌并将其与 express 一起使用

开箱即用 - jwt 无状态分布式授权