Простой jwt не возвращает токен обновления

Я использую простой jwt с django rest. Однако я не думаю, что конфигурация JWT_AUTH работает. Потому что я установил параметр rotate refresh tokens в true, но token-api-refresh url возвращает только токен доступа, в то время как он должен возвращать и refresh.

В файле settings.py у меня есть

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'shop',
    'rest_framework_simplejwt',
    'corsheaders',
    'django_cleanup'
]

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    ]
}
JWT_AUTH = {
    'ACCESS_TOKEN_LIFETIME': datetime.timedelta(minutes=15),
    'REFRESH_TOKEN_LIFETIME': datetime.timedelta(days=10),
    'ROTATE_REFRESH_TOKENS': True,
}

Мои шаблоны url:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api-token/', TokenObtainPairView.as_view()),
    path('api-token-refresh/', TokenRefreshView.as_view()),
    path("",include("shop.urls"))
]


Моя проблема заключается в api-token-refresh, поскольку он возвращает только доступ, но согласно документации simple-jwt, если я установлю rotate refresh token в true, то он также должен возвращать токен обновления наряду с доступом.

Редактирование :

Это сериализатор для обновления токена, который, очевидно, может возвращать оба токена

class TokenRefreshSerializer(serializers.Serializer):
    refresh = serializers.CharField()
    access = serializers.ReadOnlyField()

    def validate(self, attrs):
        refresh = RefreshToken(attrs['refresh'])

        data = {'access': str(refresh.access_token)}

        if api_settings.ROTATE_REFRESH_TOKENS:
            if api_settings.BLACKLIST_AFTER_ROTATION:
                try:
                    # Attempt to blacklist the given refresh token
                    refresh.blacklist()
                except AttributeError:
                    # If blacklist app not installed, `blacklist` method will
                    # not be present
                    pass

            refresh.set_jti()
            refresh.set_exp()

            data['refresh'] = str(refresh)

        return data

Вернуться на верх