基于Streamlit的应用如何通过streamlit-authenticator组件实现用户验证与隔离

news2024/9/22 23:15:53

       Streamlit框架中默认是没有提供用户验证组件的,大家在基于streamlit快速实现web应用服务过程中,不可避免的需要配置该应用的访问范围和权限,即用户群体,一般的做法有两种,一种是通过用户密码验证机制,要求只有成功登录后的用户才可访问该应用,一种是白名单策略,比如通过系统级的防护墙进行设置,或者通过Fastapi的白名单过滤机制(即app.middleware('http'))来实现。本文主要阐述前一种,具体如下。

1.安装streamlit-authenticator组件并引入
pip3 install streamlit
pip3 install streamlit-authenticator
import streamlit as st
import streamlit_authenticator as stauth

运行环境:python3.10.4,torch1.13.1,streamlit1.26.0,streamlit-authenticator0.2.2

2.在应用中使用该组件
def mainContent():  
    container = st.container()
    # create a prompt text for the text generation  
    prompt_text = st.text_area(label="用户命令输入",  
                               height=100,  
                               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_days=0)  
    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中,典型示例如下:

{'usernames': {'llm-oil': {'name': 'Oil领域用户', 'password': '$2b$12$LSvJNuFncmNpC3jlRva9k.ttsaHevzIvQRnvs8sJxJao/Der2fD.W'}, 'dataManagerAdmin': {'name': '管理员', 'password': '$2b$12$eHSzZXTaHcsfHDCYaYSjB.R9K35b4H7suQhHUSfu/3Zb9Q6CWAKqG'}}}

4.智能问答结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/986677.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matlab图像处理-灰度直方图

一幅含有一个与背景明显对比的物体的灰度图像,如下图所示。 有包含双峰的灰度直方图,如下图所示。 两个尖峰对应于物体内部和外部较多数目的点,两峰尖的谷对应于物体边缘附近相对较少数目的点。在这样的情况下,通常使用直方图来确…

点亮LED——第一个IAR工程

文章目录 说明创建工作区创建新工程向工程添加文件设置工程Options编译工程下载程序EWPtool 插件之前的"测试开发板"章节 测试开发板——第一个AutoSAR程序,使用了一个 demo 工程,不管是裸机程序还是AutoSAR程序,那都是别人已经创建好的工程。本节来介绍如何来创建…

gismo程序示例:边长为 8 16 32 的长方体 受均布载荷

文章目录 前言一、一、8*32面 受均布载荷 二、最小的面(8*16)受均布载荷三、最大的面受均布载荷 前言 只是为方便学习,不做其他用途, 一、 一、8*32面 受均布载荷 /// This is an example of using the linear elasticity solver…

9月7日扒面经

redis缓存用在哪里,用本地缓存行不行? 数据库查询缓存,减小数据源压力,提高响应速度 页面缓存:将页面的渲染结果缓存在Redis中,以减少页面生成的时间和服务器负载。 频繁计算结果缓存:将频繁计算的结果…

配电房能源监测系统

配电房能源监测系统是一种能够实时监测和管理配电房能源消耗的系统,有助于企业更好地管理能源使用,降低能源成本,提高能源利用效率。本文将详细介绍配电房能源监测系统的组成、功能和优点。 一、配电房能源监测系统的组成 配电房能源监测系统…

2023年8大在线渗透测试工具介绍与分析

随着企业参与数字化运动,网络安全已成为大多数董事会讨论的一个重要方面。事实上,最近的一份报告显示,2022 年网络犯罪造成的损失总额达到惊人的 103 亿美元。 这就是在线渗透测试工具在网络安全中受到关注的地方。 今天,我们希…

【LeetCode-中等题】40. 组合总和 II

文章目录 题目方法一:递归回溯去重 题目 本题需要注意的就是去重操作因为nums数组里面的元素可能存在重复: 不重复的版本:【LeetCode-中等题】39. 组合总和 不去重版 方法一:递归回溯去重 参考讲解视频—回溯算法中的去重&#…

从KOOM看Java内存泄漏检测

前面我们了解了LeakCanary和Matrix Resource Canary中内存泄漏的监控和解析,不难看出LeakCanary是只能在线下部署的,主要原因是因为Debug.dumpHprofData执行会冻结整个应用进程,造成应用进程几秒乃至十多秒不能响应的情况,而dump时…

异步编程 - 10 Web Servlet的异步非阻塞处理

文章目录 OverViewServlet概述Servlet 3.0提供的异步处理能力Servlet 3.1提供的非阻塞IO能力Spring Web MVC的异步处理能力基于DeferredResult的异步处理基于Callable实现异步处理 小结 OverView 我们这里主要讨论Servlet3.0规范前的同步处理模型和缺点,Servlet3.0…

Amazon Aurora MySQL 和 Amazon RDS for MySQL 集群故障转移和只读实例扩容时间测试

01 测试背景 Amazon Aurora MySQL 是与 MySQL 兼容的关系数据库,专为云而打造,性能和可用性与商用数据库相当,成本只有其 1/10。 Amazon RDS for MySQL 让您能够在云中更轻松设置、操作和扩展 MySQL 部署。借助 Amazon RDS,您可以…

小白备战大厂算法笔试(三)——栈、队列、双向队列

文章目录 栈栈常用操作栈的实现基于链表的实现基于数组的实现 两种实现对比栈典型应用 队列队列常用操作队列实现基于链表的实现基于数组的实现 队列典型应用 双向队列双向队列常用操作双向队列实现基于双向链表的实现基于数组的实现 双向队列应用 栈 栈是一种遵循先入后出的逻…

Java从入门到精通-流程控制(二)

习题讲解: 上次我们给大家留了一些流程控制的问题,这次给大家分析讲解一下: 条件语句练习: 1.编写Java程序,用于接受用户输入的数字,然后判断它是偶数还是奇数,并输出相应的消息。 import ja…

电表采集器是如何接线的?

随着社会的进步和科技的发展,智能化和自动化已经成为了各个行业的发展趋势。在电力系统领域,电表采集器的应用越来越广泛,它实现了电能数据的远程采集、传输和分析,为电力系统的稳定运行提供了重要的数据支持。那么,电…

广东成人高考报名将于9月14日开始!

截图来自广东省教育考试院官网* 今年的广东成人高考正式报名时间终于确定了! 报名时间:2023年 9 月14—20日 准考证打印时间:考前一周左右 考试时间:2023年10月21—22日 录取时间:2023年12 月中上旬 报名条件: …

恒运资本:存储市场有望触底反弹 电子竞技迎催化

昨日,沪指早盘震动下探,午后拉升翻红;深成指、创业板指跌幅收窄;到收盘,沪指涨0.12%报3158.08点,深成指跌0.24%报10515.21点,创业板指跌0.47%报2101.4点,科创50指数涨0.43%&#xff…

集成快递物流平台(快递100、快递鸟、闪送)连通多个应用

场景描述: 基于快递物流平台(快递100、快递鸟、闪送等)开放能力,无代码集成快递物流平台与多个应用互连互通。通过Aboter可搭建业务自动化流程,实现多个应用之间的数据连接。 连接器: 快递100快递鸟闪送…

容器编排学习(五)卷的概述与存储卷管理

一 卷 1 容器化带来的问题 容器中的文件在磁盘上是临时存放的,这给容器中运行的重要的应用程序带来一些问题 问题1:当容器崩溃或重启的时候,kubelet 会以干净的状态(镜像的状态)重启容器,容器内的历史数据会丢失 问题2&…

Mediasoup本地部署

一、环境 1、nodejs、npm、mac、ssh 注意:不能使用python3,请用自带的python 二、代码下载 1、mediasoup-demo 包含app(客户端)、server(服务端)、broadcasters(推流模块) git clone https://github.com/versatica/mediasoup-demo.git git checkout v3 2、me…

RC-u3 兰州拉面派餐系统--睿抗2023国赛

兰州拉面是著名美食,其煮面很有讲究,不同种类的面需要煮不同的时长。拉面馆的煮面师傅的规则很简单,只要手头有煮面篮子是空闲的,就把下一份客单指定的面放到空闲篮子里煮;如果空闲的篮子不止一个,那么先放…

无涯教程-JavaScript - BITLSHIFT函数

描述 BITLSHIFT函数返回一个左移指定位数的数字。 语法 BITLSHIFT (number, shift_amount)争论 Argument描述Required/OptionalnumberNumber must be an integer greater than or equal to 0.Requiredshift_amountShift_amount must be an integer.Required Notes 向左移动…