获取 JWT 返回的用户 ID

Getting user id returned with JWT

早上好,

我正在编写我的第一个 DRF API 并使用 django-rest-framework-jwt (https://getblimp.github.io/django-rest-framework-jwt/) 来处理 JWT 身份验证。

我目前正在使用内置视图:

from rest_framework_jwt.views import obtain_jwt_token
from rest_framework_jwt.views import refresh_jwt_token

 urlpatterns = [
    path('auth/obtain_token/', obtain_jwt_token),
    path('auth/refresh_token/', refresh_jwt_token),

但是需要return一些用户信息返回给UI(VueJS)。我想将用户 ID 和名称信息存储到 Vuex 存储中,以传递给后续 API 调用并呈现给用户 ("Hello Jim!")。

我发现这个讨论为 jwt 负载响应添加自定义函数:

虽然我不确定在哪里做...

感谢您帮助澄清。

BCBB

有几个解决方案

1) 首先用户id是在JWT中编码的,你可以自己在js中解码。

2) 您可以覆盖从 django-rest-framework-jwt 返回的负载,如下所示: 例如,将以下代码放在 accounts 应用中名为 utils.py

的文件中
def jwt_response_payload_handler(token, user=None, request=None):
    return {
        'token': token,
        'username': user.username,
        'user_id' : user.id,
        'email' : user.email
    }

并在 rest-framework-jwt 设置中替换

    'JWT_RESPONSE_PAYLOAD_HANDLER':
    'rest_framework_jwt.utils.jwt_response_payload_handler',

有了这个

    'JWT_RESPONSE_PAYLOAD_HANDLER':
    'accounts.utils.jwt_response_payload_handler',