授权功能。根据设计,如果登录名或密码不正确,该函数将进入递归并再次要求输入登录名和密码,直到输入正确的数据。然后该函数返回有关用户的信息。
如果您第一次尝试登录,该函数将返回一个包含用户数据的元组。但是,如果您在尝试失败后通过授权,该函数将返回 None。
错误在哪里?我附上下面的代码(这是我的第一个项目,在桌子上,我们还没有考虑数据安全)
问题2:用户授权是如何进行的best practices?如果我正在做一个商业项目,我应该考虑什么?
import sqlite3
def user_authorization():
user_name = input('ИМЯ ПОЛЬЗОВАТЕЛЯ: ')
user_pass = input('ПАРОЛЬ: ')
# Подключаемся к БД и вытягиваем всех пользователей
with sqlite3.connect('Databases/some.db') as connection:
cursor = connection.cursor()
try:
with connection:
cursor.execute('SELECT id, name, pass, age, rank FROM Users')
user_list = cursor.fetchall()
except Exception:
print("--- тут какие-то ошибки")
# Если логин есть в БД, то сверяем пароль, в случае успеха отдаём кортеж
# Если не нашли логин или пароль неверный, то уходим в рекурсию
for user in user_list:
if user[1] == user_name and user[2] == user_pass:
print(f'Уровень доступа: {user[4]}')
return user
else:
print('Неверное ИМЯ ПОЛЬЗОВАТЕЛЯ или ПАРОЛЬ!')
user_authorization()
user_info = user_authorization()
print(user_info)
您不仅需要
else在分支中再次调用该函数,还需要返回其执行结果: