Pyotp не смог передать один и тот же секретный ключ нескольким методам.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Pyotp не смог передать один и тот же секретный ключ нескольким методам.

Сообщение Anonymous »

Я реализую функцию забытого пароля в своем приложении. Чтобы сгенерировать код otp, я использовал библиотеку pyotp. Код генерирует код otp, но когда я пытаюсь сбросить пароль, используя сгенерированный пароль, он показывает ошибку «срок действия кода проверки истек», но срок действия кода otp здесь составляет 180 секунд. Я думаю, проблема в том, как я генерирую секретный ключ. Я предполагаю, что метод сброса пароля предполагает тот же ключ, который использовался при создании кода otp. Я хочу повторно отправлять новый код каждый раз, когда пользователь достигает конечной точки, даже если код действителен. Как я могу передать тот же секретный ключ методу сброса пароля?
Вот мой код реализации:
  • Метод для генерации otp-кода:< /li>
secret = pyotp.random_base32()
totp = pyotp.TOTP(secret, interval=settings.verification_code_expire_time)
verification_code = totp.now()
if not user.code:
user.code = VerificationCode(code=verification_code)
else:
user.code.code = verification_code
await db.commit()
return verification_code
  • Метод сброса пароля:
query = select(VerificationCode).where(VerificationCode.code == reset_password_schema.verification_code)
result = await db.execute(query)
verification_code = result.scalar_one_or_none()

if not verification_code:
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="Invalid verification code.")

totp = pyotp.TOTP(pyotp.random_base32(), interval=settings.verification_code_expire_time)

if not totp.verify(reset_password_schema.verification_code):
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="Verification code has been expired.")

query = (
update(User).where(User.id == verification_code.user_id).values(
password=reset_password_schema.new_password)
)


Подробнее здесь: https://stackoverflow.com/questions/790 ... le-methods
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»