Как остановить рекурсивную попытку входа в Jira, если введенный пароль неверен? - PullRequest
0 голосов
/ 27 февраля 2020

Я создаю утилиту, используя python для подключения к Jira и получения покрытия TEST. В рамках этого инструмента я прошу пользователя ввести учетные данные пользователя. Инструмент ожидает ввода данных пользователем, таких как ввод usid / pwd, и после успешного завершения запрашивает запрос Jira. Затем он выполняет запрос и предоставляет результаты.

Проблема здесь в том, что в качестве негативного сценария я попытался ввести неверный пароль, но затем сама Jira несколько раз пытается с этими неверными учетными данными и блокирует учетную запись.

Как мы можем остановить эту повторную попытку в самом первом предупреждении и перехватить это предупреждение, чтобы предупредить пользователя о том, что введенный пароль / введенный usid верен? Я пробовал в блоке try / кроме, но, кажется, не ловит его.

ПРЕДУПРЕЖДЕНИЕ: root: Получил исправимую ошибку от GET https://jira.xxxxxxcom/rest/api/2/serverInfo, повторю попытку [1/3 ] в 1.5083078521975724. Ошибка: 401
ПРЕДУПРЕЖДЕНИЕ: root: Получена исправимая ошибка из GET https://jira.xxxxxxcom/rest/api/2/serverInfo, повторная попытка [2/3] в 35.84973140451337s. Ошибка: 401

Мой код ниже:

pwd=input("Enter Jira credentials")
while True:
    **try:**
        jira = JIRA(options={'server': 'https://jira.dummy.com', 'verify': False}, basic_auth=(os.getlogin(), pwd))     //executing this line internally retry the same invalid credential many times
        return jira   // returns jira handle to another function to process.
        break
    **except JIRAError as e:**
        if (e.status_code == 401):
            print("Login to JIRA failed. Check your username and password")
            pwd = input("Enter your password again to access Jira OR you may close the tool ")

1 Ответ

0 голосов
/ 27 февраля 2020

Похоже, вы хотите, чтобы пользователь вводил действительные учетные данные при сбое. Вы не запрашиваете учетные данные при каждой попытке аутентификации, поэтому переместите оператор ввода в бесконечное число l oop и попробуйте следующее:

while True:
    pwd=input("Enter Jira credentials")
    try:
        jira = JIRA(options={'server': 'https://jira.dummy.com', 'verify': False}, basic_auth=(os.getlogin(), pwd))     //executing this line internally retry the same invalid credential many times
        return jira   // returns jira handle to another function to process.
    except JIRAError as e:
        if (e.status_code == 401):
            print("Login to JIRA failed. Check your username and password")
            pwd = input("Enter your password again to access Jira OR you may close the tool ")

Это попросит ввести учетные данные еще раз, прежде чем Вы пытаетесь повторить то же самое старое. И нет смысла сохранять разрыв после оператора return в операторе try.

...