stauth.Authenticate类大小写敏感问题:键被转为小写
Streamlit stauth.Authenticate类导致用户名字典键自动转小写的问题
在Python(Streamlit)项目中使用stauth.Authenticate类时,遇到了字典键大小写被修改的问题。从数据库获取用户凭证并构造字典传入该类后,实例化类的操作会将字典中原有的混合大小写用户名键(如'AbduL'、'AwaL')自动转换为全小写('abdul'、'awal')。查阅stauth库文档后,未找到关于该行为的相关说明。
简化代码
user_names = run_query("SELECT tbl_acl.user FROM tbl_acl") # 转换为列表 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)
打印结果对比
实例化类前的打印结果
{'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'}}}
实例化类后的打印结果
{'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'}}}
内容的提问来源于stack exchange,提问作者Abdul Awal Nadim
相关产品推荐
相关产品推荐

