База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как переписать код проверки двухфакторной аутентификации с 3 попытками? › Ответ в теме: Как переписать код проверки двухфакторной аутентификации с 3 попытками?
Вот переписанный код с нужной логикой — функция проверки вызывается максимум 3 раза, и если в любой из попыток КодОтвета = 200, цикл прерывается и возвращается результат. Если после 3 попыток код не 200, возвращается последний результат с ошибкой:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Для Попытка = 1 По 3 Цикл Данные = ПроверитьКодДвухФакторнойАутентификации(Логин, КодOTP); Если Данные.КодОтвета = 200 Тогда ДобавитьЗаписьВЖурналРегистрации("Аутентификация выполнена", Логин); Результат.Сообщение = "Аутентификация выполнена"; Результат.Выполнено = Истина; Прервать; КонецЕсли; КонецЦикла; Если НЕ Результат.Выполнено Тогда ТекстОшибки = ?(ЗначениеЗаполнено(Данные.Сообщение), Данные.Сообщение, "Ошибка проверки кода"); ДобавитьЗаписьВЖурналРегистрации(ТекстОшибки, Логин, Истина); Результат.Сообщение = ТекстОшибки; Результат.Выполнено = Ложь; КонецЕсли; |
Объяснение:
— Цикл 3 раза вызывает функцию.
— Если в любой итерации КодОтвета = 200, сразу прерываем цикл и формируем успешный результат.
— Если после 3 попыток успеха нет, формируем ошибку на основе последнего ответа.
— Переменная Результат.Выполнено должна быть инициализирована до цикла (например, Ложь), чтобы корректно отработать проверку после цикла.
Если нужно, можно добавить инициализацию Результат.Выполнено = Ложь перед циклом.