Как проверить сгенерированный код с помощью simply-jwt
Я пытаюсь проверить код, сгенерированный с помощью simply-jwt, но на втором шаге, когда я пытаюсь проверить это, он становится False, и я пытаюсь понять, почему
Цель - сгенерировать код после входа в систему и проверить этот код на втором шаге
здесь представления вызывают url:
class ObtainAuthTokenStep1(TokenViewBase):
serializer_class = AuthTokenSerializer
def post(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
if serializer.is_valid():
user = serializer.validated_data['user']
# Generate a 2FA code and secret
secret = base64.b32encode(SECRET_KEY.encode()).decode()
totp = pyotp.TOTP(secret)
verification_code = totp.now()
send_verification_code_via_email(user, verification_code)
# Generate a code token with the secret embedded
refresh = RefreshToken.for_user(user)
refresh['totp_secret'] = secret
code_token = str(refresh.access_token)
response_data = {
'code_token': code_token,
'message': 'Verification code sent to your email.'
}
return Response(response_data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
и сериализаторы для проверки:
class AuthTokenStep2Serializer(serializers.Serializer):
code_token = serializers.CharField()
code = serializers.CharField()
def validate(self, attrs):
code_token = attrs.get('code_token')
code = attrs.get('code')
if code_token and code:
decode_token(code_token)
secret = base64.b32encode(SECRET_KEY.encode()).decode()
totp = pyotp.TOTP(secret)
if not totp.verify(code):
raise serializers.ValidationError(_('Invalid code.'))
else:
raise serializers.ValidationError(_('Must include "code_token" and "code".'))
return attrs
Если я делаю то же самое в терминале, у меня нет никаких проблем, и код отправки работает хорошо