Django simplejwt validate token

Я реализую аутентификацию с помощью Django simpleJwt, и у меня есть вопрос.

Я хочу создать что-то с помощью jwt-токена клиента. Я использую методы, предоставленные в simpleJwt, для проверки и декодирования jwt-токена.

class AccountBookAPIView(APIView):
    def post(self, request):
        jwt_authenticator = JWTAuthentication()
        raw_access_token = request.META.get('access_token')
        validated_token = jwt_authenticator.get_validated_token(raw_access_token)
        user = jwt_authenticator.get_user(validated_token)

Однако я сомневаюсь, что некоторые методы действительно проверяют токен. Поэтому я проверил реализацию метода. Ниже приведен код для вопроса.

    def get_validated_token(self, raw_token):
        """
        Validates an encoded JSON web token and returns a validated token
        wrapper object.
        """
        messages = []
        for AuthToken in api_settings.AUTH_TOKEN_CLASSES:
            try:
                return AuthToken(raw_token)
            except TokenError as e:
                messages.append(
                    {
                        "token_class": AuthToken.__name__,
                        "token_type": AuthToken.token_type,
                        "message": e.args[0],
                    }
                )

        raise InvalidToken(
            {
                "detail": _("Given token not valid for any token type"),
                "messages": messages,
            }
        )
# this class is AuthToken in my opinion.

class AccessToken(Token):
    token_type = "access"
    lifetime = api_settings.ACCESS_TOKEN_LIFETIME

Я не могу найти пункт, который проверяет токен из базы данных. Для меня это выглядит как просто создание токена. Разве мне не нужно проверить токен в базе данных (черный список и невыполненные токены)?

Помогите мне. Любой ответ приветствуется.

Ниже представлен мой settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    
    # my apps
    'members',
    'account_books',

    # additional libraries
    'rest_framework',
    'rest_framework_simplejwt',
    'rest_framework_simplejwt.token_blacklist',
]
REST_FRAMEWORK ={
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES':(
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    )
}
SIMPLE_JWT = {
    'ACCESS_TOKEN_LIFETIME': timedelta(days=1),
    'REFRESH_TOKEN_LIFETIME': timedelta(days=7),
    'ROTATE_REFRESH_TOKENS': True,
    'BLACKLIST_AFTER_ROTATION': True,
    'USER_ID_FIELD' : 'member_id',
}
Вернуться на верх