在 django 1.10 drf jwt 响应中返回用户名

Posted

技术标签:

【中文标题】在 django 1.10 drf jwt 响应中返回用户名【英文标题】:Returning username in django 1.10 drf jwt response 【发布时间】:2017-06-13 15:45:34 【问题描述】:

我一直在摆弄JWT_PAYLOAD_HANDLER 试图在输出中返回用户名

所以我在我的myApp/views.py 中尝试了这个:

def jwt_response_payload_handler(token, user=None, request=None):
    if user and request:
      return json.dumps(
        'token': token,
         'username':  str(request.user.username)
      )
    else:
      return  'token': token 

然后我在project/settings.py 中尝试了这个:

JWT_AUTH = 
    'JWT_PAYLOAD_HANDLER':
    'myApp.views.jwt_response_payload_handler'

执行 curl 请求我收到错误消息:

TypeError at /api-token-auth/ <User: nunya> is not JSON serializable

我非常接近解决这个问题......但我错过了一些东西。

我错过了什么?

【问题讨论】:

你能发布异常的完整堆栈跟踪吗? 【参考方案1】:

我终于弄明白了:

# myApp/views.py
def jwt_response_payload_handler(token, user=None, request=None):
  return  'token': token, 'username': unicode(request.data['username']) 

【讨论】:

以上是关于在 django 1.10 drf jwt 响应中返回用户名的主要内容,如果未能解决你的问题,请参考以下文章

Django - DRF自带的token认证和JWT区别

django drf JWT

django drf框架中的user验证以及JWT拓展的介绍

Django Rest Framework(DRF) Json Web Token(JWT) 身份验证和登录过程

DRF:如何将 django-rest-framework-jwt 集成到 Djoser

自定义路由组件,Django的admin后台管理,DRF的三大认证,jwt认证