You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中如何获取当前用户ID?JWT返回Token时如何附带用户ID?

解决JWT获取Token同时返回用户ID的问题

嘿,我刚好也碰到过这个需求!要让obtain_jwt_token接口返回Token的同时带上用户ID,只需要自定义JWT的响应逻辑就行,操作很简单,具体步骤如下:

步骤1:自定义JWT响应处理器

在你的views.py里添加一个自定义的响应处理函数,用来修改JWT接口的返回内容:

from rest_framework_jwt.settings import api_settings

def jwt_response_payload_handler(token, user=None, request=None):
    # 除了用户ID,你还可以按需添加其他字段,比如用户名、邮箱等
    return {
        'token': token,
        'user_id': user.id,
        'username': user.username
    }

步骤2:配置Django使用自定义处理器

打开项目的settings.py,添加JWT_AUTH配置,指定我们刚才写的处理器路径:

JWT_AUTH = {
    # 注意替换成你实际的视图路径,比如你的views在scrumboard app下,就写'scrumboard.views.jwt_response_payload_handler'
    'JWT_RESPONSE_PAYLOAD_HANDLER': 'your_project_name.views.jwt_response_payload_handler',
}

步骤3:验证效果

保持你原来的URL配置不变:

urlpatterns = [
    url(r'^api-token-auth/', obtain_jwt_token),
    url(r'^users/$', views.UserList.as_view()),
]

现在调用/api-token-auth/接口,返回的响应就会包含Token和用户ID啦,示例响应如下:

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6ImpvaG5kb2UiLCJleHAiOjE3MTk5MjQwNzEsImVtYWlsIjoiam9obmRvZUBleGFtcGxlLmNvbSJ9.S9X0Xz8K8eQZ8aZ7aQ7aQ7aQ7aQ7aQ7aQ7aQ7aQ7aQ",
  "user_id": 1,
  "username": "john_doe"
}

内容的提问来源于stack exchange,提问作者M1rwen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:07:50