首页 > 解决方案 > Python 返回(登录名、密码)或类似 null

问题描述

想象一下,我有一个奇怪的身份验证表单,用户实际上需要输入“LOGIN 登录密码”(例如 LOGIN john qwerty),我想创建一个函数来检查它是否正确,loginpassword返回类似于(True, login, password)它们是否正确或(False) 没有任何附加信息。所以我想得到这样的东西

def is_text_in_correct_format(text):
    if len(text.split()) == 3:
        flag, login, password = text.split()
        try:
            // some checking here
            return (True, login, password)
        except Exception as err:
            logging.exception(err)
            return False
    else:
        return False

我怎样才能做到这一点?

PS我知道这个设计是最好的但仍然很奇怪。

标签: python

解决方案


这是您可以做的超级简单的事情:只需拥有一个包含所有存储login:password配对的字典(或者实际上是您想要的任何类型的数据库),并以这种方式检查有效性。

# user data goes in this dict
UserData = {'john':'qwerty'}

def is_text_in_correct_format(text):
    if len(text.split()) == 3:
        flag, login, password = text.split()
        if (login in UserData) and (UserData[login] == password):
            return (True, login, password)
        else:
            return (False, None, None)

我认为,您实际上并不需要 try/except。此外,我else以成功元组的格式返回一个元组,而不仅仅是布尔值;这有望最大限度地减少任何潜在的数据库错误。

如果您想要根据输入短语的第一个单词进行可变操作,您还可以添加另一个检查。如所写,代码将适用于命令“LOGIN john qwerty”以及“PLEASEDONTLOGIN john qwerty”:)。


推荐阅读