как проверить имя пользователя и связанный пароль в списке словарей для сравнения с пользовательским вводом - PullRequest
0 голосов
/ 11 октября 2018

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

Я пробовал много методов, но, похоже, не могу получить нужный мне результат.Проблема с кодом, который у меня есть, состоит в том, что он не сравнивает пароль с соответствующим именем пользователя.Это приводит к ИСТИНА, если пароль есть в любом словаре.Буду признателен за любую помощь, так как я буду продолжать подключаться к себе

This is what I have:

adminList = [
    {
        "username": "DaBigBoss",
        "password": "DaBest"
    },
    {
        "username": "root",
        "password": "toor"
    }
]

#Import Required Tools

import getpass


####################################
###     Define ALL FUNCTIONS     ###
####################################


#Define function to confirm login credntials of the user
def getCreds():
    user_name = input("Please input your user name: ")
    while not any(d["username"] == user_name for d in adminList):
        print("User name not recognized, please try again.")
        getCreds()

    pass_word = getpass.getpass("Please enter your password: ")
    print("Checking Credentials")


    while not any(d["password"] == pass_word for d in adminList):
        print("The password in not correct")
        pass_word = getpass.getpass("Please enter your password again: ")
    else:
        print ("Hello and welcome to the Matrix.")    

#Call the getCreds function        
getCreds()

1 Ответ

0 голосов
/ 11 октября 2018

Я воздержусь от простого примера кодирования, но нужно пойти и получить имя пользователя и пароль, а затем сравнить оба значения с вашими учетными данными администратора.Для этой задачи вам, вероятно, следует изменить свой adminList из Списка словарей в словарь словарей:

adminList = {"DaBigBoss": {"password": "DaBest}, "root": {"password": "toor"}}

Преимущество этого механизма двоякое: 1. Запрос проще (запросить, если пользовательсопоставляет, а не сравнивает пароль) 2. Он гарантирует, что может быть только один DaBigBoss, что упрощает предотвращение использования одного и того же имени пользователя N раз.(просто, если "DaBigBoss" в adminList будет достаточно)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...