python - Python 返回(登录名、密码)或类似 null
问题描述
想象一下,我有一个奇怪的身份验证表单,用户实际上需要输入“LOGIN 登录密码”(例如 LOGIN john qwerty),我想创建一个函数来检查它是否正确,login
并password
返回类似于(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我知道这个设计是最好的但仍然很奇怪。
解决方案
这是您可以做的超级简单的事情:只需拥有一个包含所有存储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”:)。
推荐阅读
- python - 如何从广告创意 Facebook 营销 API 获取广告 ID
- javascript - 获取客户端javascript代码中可用的node.js服务器端对象
- r - 使用特定列的值从其他行中减去,但列索引在 R 中的文件之间移动
- spring - 使用反应式 DB 客户端扩展 Spring WebFlux 应用程序时出现问题:Maven 依赖项冲突?
- git - 如何 grep Git 提交消息或关键字的差异并输出更改(聚合)的文件名?
- javascript - CakePHP scriptBlock 没有在 HTML 页面中添加任何 JavaScript
- node.js - 为什么我不能直接使用 req.body 作为参数?
- javascript - React Native,为什么 react-native run-android 不起作用?
- hadoop - 使用 cygwin 在窗口 10 上配置 Hive:路径错误
- python - 在 pylint 和 mypy 中处理 Python 类重新定义警告