提问人:Abdul Awal Nadim 提问时间:11/16/2023 最后编辑:Abdul Awal Nadim 更新时间:11/16/2023 访问量:63
stauth 中的区分大小写问题。Authenticate 类 - 转换为小写的密钥
Case Sensitivity Issue in stauth.Authenticate Class - Keys Converted to Lowercase
问:
使用 stauth。我的 Python(Streamlit) 代码中的 authenticate 类给我带来了麻烦。该问题似乎与字典键中的区分大小写有关。我有一组从数据库中检索到的用户凭据,并且我正在构建一个字典以与 stauth 一起使用。对类进行身份验证。但是,在创建类的实例后,字典中的键将转换为小写。这是我的代码的简化版本:
user_names = run_query("SELECT tbl_acl.user FROM tbl_acl")
# Converting to List
user_names_list = [item[0] for item in user_names]
names = run_query("SELECT last_name FROM tbl_acl")
names_list = [item[0] for item in names]
passwords = run_query("SELECT password FROM tbl_acl")
passwords_list = [item[0] for item in passwords]
hashed_passwords = stauth.Hasher(passwords_list).generate()
credentials = {"usernames": {}}
for un, name, pw in zip(user_names_list, names, hashed_passwords):
user_dict = {"name": name, "password": pw}
credentials["usernames"].update({un: user_dict})
print(credentials)
authenticator = stauth.Authenticate(
credentials, "some_cookie_name", "some_signature_key", cookie_expiry_days=30
)
print(credentials)
在打印的凭据词典中,密钥最初有混合大小写('AbduL'、'AwaL'、'NadiM'),但在使用 stauth 之后。Authenticate 类,密钥将转换为小写 ('abdul', 'awal','nadim')。我已经查看了 stauth 库的文档,但找不到有关此行为的信息。
1st --> print(credentials)
{'usernames': {'AbduL': {'name': (None,), 'password': '$2b$12$GM50VYr7Bu3Ve7JKcPGxN.ApmzXSDaYjU8/kQlW9OXK00ZMFa5oa'}, 'AwaL': {'name': ('',), 'password': '$2b$12$UtcGY0HUPzXtflFHXlbsee3UbekPXMSyPKLPUOVMBlT4qgAIe1BP6'}, 'NadiM': {'name': (None,), 'password': '$2b$12$n5DY/I.i4xVQxIgqsLbmLe8iSrn/9TLfnkCJ.7MbJdjpj8JO3etW'}}}
2nd --> print(credentials)
{'usernames':{'abdul': {'name': (None,), 'password': '$2b$12$GM50VYr7Bu3Ve7JKcPGxN.ApmzXSD0ajU8/kQlW9OXK00ZMFa5oa'}, 'awal': {'name': ('',), 'password': '$2b$12$UtcGY0HUPzXtflFHXlbsee3UbekPXSyPKLPUOVMBlT4qgAIe1BP6'}, 'nadim': {'name': (None,), 'password': '$2b$12$n5DY/I.i4xVQxIgqsLbmLe8iSrn9TJLfnkCJ.7MbJdjpj8JO3etW'}}}
这个案例转换是故意的吗?验证类,还是缺少配置选项?
如何确保在使用 stauth 时保留密钥的大小写。验证类?
是否有任何最佳实践或已知的解决方案来处理 stauth 库中键的区分大小写问题?
答: 暂无答案
评论