我的服务器有一个用户类:
class User():
def __init__(self, username, password, group, join_date):
self.password = password
self.group = group
self.join_date = join_date
我还有一本字典,以用户ID作为键。添加用户的格式为:
users = {
1443: User("Bob", "my_password", "admin", "June 23")
}
我的问题是当用户登录到他们的帐户时:
username = input()
password = getpass.getpass()
我想要的是:
if username in users:
if users[username].password == password
我不能这样做,因为我不知道如何从用户的用户名中获取用户ID,因为它嵌入在一个对象中。有什么想法或建议吗?我不熟悉身份验证/授权
你有两个选择;循环遍历所有对象并找到与登录名匹配的用户,或者从username映射到userid,或者直接映射到user对象
循环需要对
users
字典的所有值进行线性搜索:您可以生成一次从username到userid的映射,然后使用该映射:
然后使用:
这比每次线性搜索快得多,映射中的直接查找是O(1)常数时间查找
您可以直接将映射点设置为用户对象:
如果您的程序添加或删除用户,您也需要维护这个额外的映射
相关问题 更多 >
编程相关推荐