Учетные записи REST API SIMPLE JWT не возвращают имя пользователя в http://127.0.0.1:8000/api/auth/jwt/.

Я изучаю Djago REST API и в настоящее время хочу понять, как успешно запустить приложение для счетов в рамках проекта.

Я использую учебник, который использует JWT старой версии, которая не поддерживает Django +2, поэтому я использую Simple JWT. Так вот, Simple JWT и старая версия совсем не похожи на то, что объясняет тутор и вряд ли можно найти в новой версии. Я был бы признателен, если бы вы объяснили, что мне нужно сделать. Я хочу, чтобы в моем http://127.0.0.1:8000/api/auth/jwt/ возвращалось user после того, как я введу свое имя пользователя и пароль, однако он возвращает только "access" и "refresh"

в моем project/accounts/utils.py : (код ниже из учебника, однако он не поддерживается Simple JWT)

from django.conf import settings
from django.utils import timzone

def jwt_response_payload_hadler(token,user=None,request=None):
    return {
        'token':token,
        'user':  user.username,

        
        }

в моем проекте настройки у меня есть: (взято из нового Simple JWT)

from datetime import timedelta

REST_FRAMEWORK = {

    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication',
        'rest_framework.authentication.SessionAuthentication',
        

    ),
    
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',

    ),

    'DEFAULT_FILTER_BACKENDS':(
        'rest_framework.filters.SearchFilter',
        'rest_framework.filters.OrderingFilter',
    ),

    'SEARCH_PARAM':'search',
    'ORDERING_PARAM':'ordering',
}


JWT_AUTH = {
    'ACCESS_TOKEN_LIFETIME': timedelta(minutes=5),
    'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
    'ROTATE_REFRESH_TOKENS': False,
    'BLACKLIST_AFTER_ROTATION': False,
    'UPDATE_LAST_LOGIN': False,

    # 'JWK_URL': None,
   
    'AUTH_HEADER_TYPES': ('Bearer',),
    'AUTH_HEADER_NAME': 'HTTP_AUTHORIZATION',
    'USER_ID_FIELD': 'id',
    'USER_ID_CLAIM': 'user_id',
    'USER_AUTHENTICATION_RULE': 'rest_framework_simplejwt.authentication.default_user_authentication_rule',

    'AUTH_TOKEN_CLASSES': ('rest_framework_simplejwt.tokens.AccessToken',),
    'TOKEN_TYPE_CLAIM': 'token_type',

    'JTI_CLAIM': 'jti',

    'SLIDING_TOKEN_REFRESH_EXP_CLAIM': 'refresh_exp',
    'SLIDING_TOKEN_LIFETIME': timedelta(minutes=5),
    'SLIDING_TOKEN_REFRESH_LIFETIME': timedelta(days=1),
}   

в старом JWT, который наставник использует в настройках:

'JWT_RESPONSE_PAYLOAD_HANDLER':
'accounts.api.utils.jwt_response_payload_handler'

Однако он не поддерживается Simple JWT, поэтому я не включил его в свои настройки. Что может быть альтернативой этому? Как я могу достичь приведенного ниже примера?

Token Obtain Pair

Takes a set of user credentials and returns an access and refresh JSON web token pair to prove the authentication of those credentials.

POST /api/auth/jwt/

HTTP 200 OK
Allow: POST, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "refresh": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTY0MTY1MjMxOCwiaWF0IjoxNjQxNTY1OTE4LCJqdGkiOiIzMWJlYzBkNTJlMTU0YzM4YWExNTU3YWE4ZGM4ZDRlNSIsInVzZXJfaWQiOjF9.DlHtn6eiVYsMu-voZHFvoxMf6950hVKlF7JEUpmL9qg",
    "access": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjQxNTY2MjE4LCJpYXQiOjE2NDE1NjU5MTgsImp0aSI6ImE3MjMxNjgyNGZlYTQ2YmRhNDk3ZDM3OWRiM2NlODNkIiwidXNlcl9pZCI6MX0.JVDrbH1I2tMvP0c_phPRG_Nk8NcRVbLXpwR0uP9jE9I",
   "user": "lulu"
}
Вернуться на верх