JWT-токен успешно истек, но все еще можно получить доступ к API Django
Я использую JWT токен в django. Я установил время доступа к токену на '1 минуту' через 1 минуту доступ & обновление токена истекает, но когда я пытаюсь получить доступ к API url, он дает доступ и показывает данные.
я проверяю с помощью verifyToken тот же токен показывает недействительным. и используя тот же токен для вызова api он показывает success=True и печатает 'hello1'
Может ли кто-нибудь сказать мне, что не так с JWT? Посмотрите приведенный ниже код для справки.
JWT Docs for referance. https://django-rest-framework-simplejwt.readthedocs.io/en/latest/
Код:
Setting.py
SIMPLE_JWT = {
'ACCESS_TOKEN_LIFETIME': timedelta(minutes=1),
'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
'ROTATE_REFRESH_TOKENS': False,
'BLACKLIST_AFTER_ROTATION': True,
'UPDATE_LAST_LOGIN': False,
'ALGORITHM': 'HS256',
'SIGNING_KEY': SECRET_KEY,
'VERIFYING_KEY': None,
'AUDIENCE': None,
'ISSUER': None,
'AUTH_HEADER_TYPES': ('Bearer', ),
'AUTH_HEADER_NAME': 'HTTP_AUTHORIZATION',
'USER_ID_FIELD': 'id',
'USER_ID_CLAIM': 'user_id',
'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=1),
'SLIDING_TOKEN_REFRESH_LIFETIME': timedelta(days=1),
}
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_simplejwt.authentication.JWTAuthentication',
),
'DEFAULT_PAGINATION_CLASS': 'slash.controllers.pagination.PageNumberCustomPagination',
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
}
CRONJOBS = [
('0 23 * * *', 'slash.cron.delete_expired_blacklisted_token'),
]
CORS_ALLOW_METHODS = (
'GET',
'POST',
'PUT',
'PATCH',
'DELETE',
'OPTIONS'
)
DRF_API_LOGGER_DATABASE = True
DRF_LOGGER_QUEUE_MAX_SIZE = 50
DRF_LOGGER_INTERVAL = 10
DRF_API_LOGGER_EXCLUDE_KEYS = ['password', 'token', 'access', 'refresh'] # Sensitive data will be replaced with "***FILTERED***".
DRF_API_LOGGER_SLOW_API_ABOVE = 200
URLS.py
path('token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
path('token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
path('token/verify/', TokenVerifyView.as_view(), name='token_verify'),
path('token/blacklist/', TokenBlacklistView.as_view(), name='token_blacklist'),
path('api/student/', StudentAPI.as_view({'post': 'student'}), name='student'),
Views.py
from requests import Response
from rest_framework.permissions import IsAuthenticated
from rest_framework.viewsets import ViewSet
from rest_framework.response import Response
from rest_framework import status
class StudentAPI(ViewSet):
permission_classes = [IsAuthenticated]
def student(self, request, *args, **kwargs):
print('hello1')
return Response({"success": True}, status=status.HTTP_200_OK)
`
Я следовал полной документации по JWT django auth, но все равно столкнулся с той же проблемой.