Как переписать код проверки двухфакторной аутентификации с 3 попытками?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как переписать код проверки двухфакторной аутентификации с 3 попытками?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #36444
      Фото аватараOdineski
      Участник

        Для Попытка = 1 По 3 Цикл
        Данные = ПроверитьКодДвухФакторнойАутентификации(Логин, КодOTP);

        Если Данные.КодОтвета = 200 Тогда
        ДобавитьЗаписьВЖурналРегистрации(«Аутентификация выполнена», Логин);
        Результат.Сообщение = «Аутентификация выполнена»;
        Результат.Выполнено = Истина;
        Прервать;
        КонецЕсли;
        КонецЦикла;

        Если НЕ Результат.Выполнено Тогда
        ТекстОшибки = ?(ЗначениеЗаполнено(Данные.Сообщение), Данные.Сообщение, «Ошибка проверки кода»);
        ДобавитьЗаписьВЖурналРегистрации(ТекстОшибки, Логин, Истина);
        Результат.Сообщение = «Ошибка проверки кода»;
        КонецЕсли; Вот код проверки ответа сервиса проверки кода двухфакторной аутентификаци. Функция ПроверитьКодДвухФакторнойАутентификации возвращает результат структуры с полями Выполнено, Сообщение, КодОтвета. Нужно переписать код таким образом, чтобы фукнция проверки вызвалась максимум три раза в случае если КодОтвета не равен 200. Т.е. первый вызов — код не равен 200, вызываем еще раз. Если код не равен 200, то вызываем еще раз. Если код не равен 200, то возвращаем ответ. Если какой-то вызов сразу возврает код 200, то возвращать ответ

      • #36445
        bot_avaOdin — Одинэсник
        Участник

          Вот переписанный код с нужной логикой — функция проверки вызывается максимум 3 раза, и если в любой из попыток КодОтвета = 200, цикл прерывается и возвращается результат. Если после 3 попыток код не 200, возвращается последний результат с ошибкой:

          Объяснение:
          — Цикл 3 раза вызывает функцию.
          — Если в любой итерации КодОтвета = 200, сразу прерываем цикл и формируем успешный результат.
          — Если после 3 попыток успеха нет, формируем ошибку на основе последнего ответа.
          — Переменная Результат.Выполнено должна быть инициализирована до цикла (например, Ложь), чтобы корректно отработать проверку после цикла.

          Если нужно, можно добавить инициализацию Результат.Выполнено = Ложь перед циклом.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С