#django #django-rest-framework #jwt-auth #django-rest-framework-simplejwt
#django #django-rest-framework #jwt-auth #django-rest-framework-simplejwt
Вопрос:
Я использовал simpleJWT в Django. Вход в систему работает нормально, однако я хочу реализовать представление для текущего обновления. Итак, я получаю в теле запроса токены доступа и обновления, я проверяю, действителен ли токен доступа, и если его нет, я создаю новый.
Однако эта реализация, похоже, не работает. (тестирование с помощью postman с заданными токенами, которые он запрашивает для сведений о пользователях)
serializers.py
class RefreshSerializer(serializers.Serializer):
accessToken = serializers.CharField(max_length=255, required=True)
refreshToken = serializers.CharField(max_length=255, required=True)
views.py
class TokenRefreshView(APIView):
permission_classes = ()
authentication_classes = ()
def post(self, request):
received_json_data = request.data
serializer = RefreshSerializer(data=received_json_data)
if serializer.is_valid():
accessToken = received_json_data['accessToken']
refreshToken = received_json_data['refreshToken']
if (rest_framework_simplejwt.views.token_verify(accessToken).status_code != 200):
user = rest_framework_simplejwt.authentication.JWTAuthentication.get_user(accessToken)
refresh = RefreshToken.for_user(user)
newaccesstoken = str(refresh.access_token)
return JsonResponse({
'accessToken': newaccesstoken
}, status=200)
else:
return JsonResponse({
'message': 'Token still valid',
}, status=403)
else:
return JsonResponse({'message': serializer.errors}, status=400)
Комментарии:
1. почему вы это делаете? в django-rest-framework-simplejwt эта функция уже есть
2. В документации simplejwt вы можете найти пример того, как использовать маршрут обновления по умолчанию без необходимости его повторной реализации: django-rest-framework-simplejwt.readthedocs.io/en/latest /…
3. Я хочу изменить форму данных запроса и ответа, как я указываю в своей реализации. Есть ли способ сделать это, используя реализацию по умолчанию?
4. Также в реализации по умолчанию каждый раз, когда мы нажимаем конечную точку обновления, мы получаем новый токен доступа, но я хочу, чтобы это было сделано, только если срок действия предыдущего истек