从 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 获取用户名和照片的主要内容,如果未能解决你的问题,请参考以下文章