网站建设app小程序开发,微网站 留言板,建设校园门户网站信息意义,网站后台地址一般是Streamlit框架中默认是没有提供用户验证组件的#xff0c;大家在基于streamlit快速实现web应用服务过程中#xff0c;不可避免的需要配置该应用的访问范围和权限#xff0c;即用户群体#xff0c;一般的做法有两种#xff0c;一种是通过用户密码验证机制#xff0c;要求只… Streamlit框架中默认是没有提供用户验证组件的大家在基于streamlit快速实现web应用服务过程中不可避免的需要配置该应用的访问范围和权限即用户群体一般的做法有两种一种是通过用户密码验证机制要求只有成功登录后的用户才可访问该应用一种是白名单策略比如通过系统级的防护墙进行设置或者通过Fastapi的白名单过滤机制(即app.middleware(http)来实现。本文主要阐述前一种具体如下。
1.安装streamlit-authenticator组件并引入
pip3 install streamlit
pip3 install streamlit-authenticatorimport streamlit as st
import streamlit_authenticator as stauth运行环境python3.10.4torch1.13.1streamlit1.26.0streamlit-authenticator0.2.2
2.在应用中使用该组件
def mainContent(): container st.container()# create a prompt text for the text generation prompt_text st.text_area(label用户命令输入, height100, placeholder请在这儿输入您的命令)# 其他语句...if __name__ __main__: # 用户信息后续可以来自DB names [Oil领域用户, 管理员] # 用户名usernames [llm-oil, dataManagerAdmin] # 登录名passwords [S6rJam, Abcd1234!#!] #登录密码# 对密码进行加密操作后续将这个存放在credentials中hashed_passwords stauth.Hasher(passwords).generate() # 定义字典初始化字典credentials {usernames: {}} # 生成服务器端的用户身份凭证信息 for i in range(0, len(names)): credentials[usernames][usernames[i]] {name: names[i], password: hashed_passwords[i]} authenticator stauth.Authenticate(credentials, some_cookie_name, some_signature_key, cookie_expiry_days0) name, authentication_status, username authenticator.login(Login, main) if authentication_status: # 登录成功mainContent() elif authentication_status False: #登录失败st.error(Username/password is incorrect) elif authentication_status None: #未输入登录信息st.warning(Please enter your username and password)
3.stauth.Authenticate()接口的第一个参数格式
由于treamlit-authenticator组件的升级影响stauth.Authenticate()接口的第一个参数类型已经调整为dict字典格式用户身份信息存放在dict类型的credentials中详细实现见本文第2部分的20-22行代码典型示例如下
{usernames: {llm-oil: {name: Oil领域用户, password: $2b$12$LSvJNuFncmNpC3jlRva9k.ttsaHevzIvQRnvs8sJxJao/Der2fD.W}, dataManagerAdmin: {name: 管理员, password: $2b$12$eHSzZXTaHcsfHDCYaYSjB.R9K35b4H7suQhHUSfu/3Zb9Q6CWAKqG}}}
4.智能问答结果