You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 00:20:19