0

早上好,

我正在编写我的第一个 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),

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

我发现这个讨论为 jwt 有效负载响应添加自定义函数: jwt rest framework return user id with token

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

感谢您帮助澄清。

BCBB

4

1 回答 1

2

有几个解决方案

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',
于 2019-02-07T14:47:11.620 回答