1. 什么是?
让代码快速生成web app是很多AI算法工程师们的需求,2019年新兴的这个项目能帮你解决类似的问题 。应用程序框架,是一个开源的库,在()上超过18.9千颗stars、1.7千folk(截止2022.5.6),利用可以快速构建机器学习应用和高级数据分析可视化的用户界面 。
2. -安全身份验证组件
在官方文档中,没有提供提供安全身份验证组件 。目前,第三方-()提供此组件 。
2.1.密码加密
hashed_passwords = stauth.Hasher(passwords).generate()
2.2. 创建登录窗口组件
使用哈希密码创建身份验证对象 。在这里,您需要输入JWT 的名称,该名称将存储在客户端浏览器上,用于重新验证用户,而无需重新输入其凭据 。此外,您还需要提供任意随机密钥,用于对的签名进行哈希 。最后,您需要指定使用的天数,如果不需要无密码重新验证,可以将其设置为0 。
authenticator = stauth.Authenticate(names, usernames, hashed_passwords,'some_cookie_name', 'some_signature_key', cookie_expiry_days=30)
然后最终呈现登录窗口模块,如下所示 。在这里,您需要提供登录表单的名称,并指定表单的位置,即主体或侧栏(默认为主体) 。
name, authentication_status, username = authenticator.login('Login', 'main')
2.3. 认证用户
使用返回的名称和身份验证状态来允许已验证的用户继续访问任何受限制的内容 。此外,还可以在主体或侧边栏的任何位置添加可选的注销按钮(默认为主体) 。
if authentication_status:authenticator.logout('Logout', 'main')st.write('Welcome *%s*' % (name))st.title('Some content')elif authentication_status == False:st.error('Username/password is incorrect')elif authentication_status == None:st.warning('Please enter your username and password')
其中,登出为.(‘’, ‘main’)函数方法 。
3. 登录认证实践 3.1. 界面效果示例
【Streamlit应用程序使用Streamlit】实践效果如下图所示:
登陆后,进入自己的应用端 。
3.2. 实践代码
使用 非常简单,只需导入模块并调用它来验证预定义用户的凭据 。
pip-
关键依赖:
PyJWT-2.3.0 -3.2.2 extra---0.1.53
依赖extra---0.1.53 提供管理 。详见 。
主要代码如下:
import streamlit as stimport streamlit_authenticator as stauthimport BigBooks# 如下代码数据,可以来自数据库names = ['肖永威', '管理员']usernames = ['xiaoyw', 'admin']passwords = ['S0451', 'ad4516']hashed_passwords = stauth.Hasher(passwords).generate()authenticator = stauth.Authenticate(names, usernames, hashed_passwords,'some_cookie_name', 'some_signature_key', cookie_expiry_days=30)name, authentication_status, username = authenticator.login('Login', 'main')if authentication_status:with st.container():cols1,cols2 = st.columns(2)cols1.write('欢迎 *%s*' % (name))with cols2.container():authenticator.logout('Logout', 'main')BigBooks.main()elif authentication_status == False:st.error('Username/password is incorrect')elif authentication_status == None:st.warning('Please enter your username and password')
代码解释:.main()代码引自[1]内容 。
- 使用socket通道和多线程创建多人对话聊天室
- A星算法代码
- ZYNQ:MIO、EMIO、IO的区别和灵活使用
- 使用Samba实现文件共享:Windows和Linux之间
- 使用Keras,TensorFlow.js,Node
- 10、帧动画
- 解决项目版本冲突——maven-shade插件使用
- 提示 “需要使用新应用以打开此windowsdefender链接“
- Win11解决需要使用新应用以打开此WindowsDefender链接
- 显示需要使用新应用打开此ms-windows-store链接的解决办法