Возвращение идентификатора пользователя с JWT - PullRequest
0 голосов
/ 07 февраля 2019

Доброе утро,

Я пишу свой первый 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),

, но необходимо вернуть некоторую информацию о пользователе обратно в пользовательский интерфейс (VueJS). Я хотел бы сохранить информацию об имени пользователя и имени в хранилище Vuex для передачи в последующий APIвызывает и представляет пользователю («Hello Jim!»).

Я обнаружил, что здесь обсуждается добавление пользовательской функции для ответа полезной нагрузки jwt: jwt rest framework возвращает идентификатор пользователя с токеном

Я не уверен, ГДЕ делать это, хотя ...

Спасибо за вашу помощь в разъяснении.

BCBB

1 Ответ

0 голосов
/ 07 февраля 2019

Существует несколько решений

1) Прежде всего, идентификатор пользователя закодирован в 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',
...