Как правильно обработать exception PasswordHashInvalidError?

Ссылка скопирована
1 ответ

Значит есть вот такой код авторизации по QR.

async def login_by_qrcode(self):         if not self.client.is_connected():             await self.client.connect()         qr_login = await self.client.qr_login()         r = False         while not r:             generate_qrcode(qr_login.url)             try:                 r = await qr_login.wait(60)             except asyncio.exceptions.TimeoutError:                 await qr_login.recreate()             except telethon.errors.SessionPasswordNeededError: # отлавливаем 2ух факторку                 password = input("password: ")                 try:                     await self.client.sign_in(password=password) # отправляем пароль                 except telethon.errors.rpcerrorlist.PasswordHashInvalidError: # отлавливаем неправильный пароль                     password = input("Input password again: ")                      await self.client.sign_in(password=password) # вводим неправильный пароль и падаем в stdout

async def login_by_qrcode(self): if not self.client.is_connected(): await self.client.connect() qr_login = await self.client.qr_login() r = False while not r: generate_qrcode(qr_login.url) try: r = await qr_login.wait(60) except asyncio.exceptions.TimeoutError: await qr_login.recreate() except telethon.errors.SessionPasswordNeededError: # отлавливаем 2ух факторку password = input("password: ") try: await self.client.sign_in(password=password) # отправляем пароль except telethon.errors.rpcerrorlist.PasswordHashInvalidError: # отлавливаем неправильный пароль password = input("Input password again: ") await self.client.sign_in(password=password) # вводим неправильный пароль и падаем в stdout

Как правильно переписать последний блок try except так, чтобы он постоянно отлавливал PasswordHashInvalidError ?

Дополнительно:

Огранизовать цикл while True, при вводе правильного пароля (т.е. если не было исключения) делать break.

while True:     try:         attempt_stuff_and_things()     except SomeException as err:         react_to_error(err)     else:  # исключения не было         break

while True: try: attempt_stuff_and_things() except SomeException as err: react_to_error(err) else: # исключения не было break

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Стас DB Ответ

Для обработки исключения PasswordHashInvalidError в PHP, вам необходимо использовать конструкцию try-catch. Это позволит вам перехватить и обработать исключение, которое может возникнуть при проверке хэша пароля.

Пример кода:

try {
    // Ваш код для проверки хэша пароля
    if ($passwordHash !== $storedPasswordHash) {
        throw new PasswordHashInvalidError("Invalid password hash");
    }
} catch (PasswordHashInvalidError $e) {
    // Обработка исключения PasswordHashInvalidError
    echo "Ошибка: " . $e->getMessage();
    // Дополнительные действия, такие как логирование или отправка уведомления администратору
}

try { // Ваш код для проверки хэша пароля if ($passwordHash !== $storedPasswordHash) { throw new PasswordHashInvalidError("Invalid password hash"); } } catch (PasswordHashInvalidError $e) { // Обработка исключения PasswordHashInvalidError echo "Ошибка: " . $e->getMessage(); // Дополнительные действия, такие как логирование или отправка уведомления администратору }

В данном примере, если хэш пароля не совпадает с сохраненным хэшем, будет сгенерировано исключение PasswordHashInvalidError. Затем оно будет перехвачено блоком catch, где вы можете выполнить необходимые действия, например, вывести сообщение об ошибке или выполнить дополнительные операции.

Не забывайте создать класс PasswordHashInvalidError, который будет расширять встроенный класс Exception, чтобы можно было использовать его для генерации исключения в вашем коде.

Надеюсь, этот пример поможет вам правильно обработать исключение PasswordHashInvalidError в вашем PHP-коде.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно