streamlit增加用户密码登录功能页面

import streamlit as st
from streamlit_option_menu import option_menu
from webui_pages.utils import *
from webui_pages.dialogue.dialogue import dialogue_page, chat_box
from webui_pages.knowledge_base.knowledge_base import knowledge_base_page
import os
import sys
from configs import VERSION
from server.utils import api_address

# 用户名和密码的默认值
DEFAULT_USERNAME = "xx"
DEFAULT_PASSWORD = "xx"

api = ApiRequest(base_url=api_address())

# 检查会话状态中是否有登录状态,如果没有,初始化为 False
if 'logged_in' not in st.session_state:
    st.session_state.logged_in = False


def login_page():
    with st.form("login_form"):
        st.title("登录")
        username = st.text_input("用户名", value="")
        password = st.text_input("密码", value="", type="password")
        submit = st.form_submit_button("登录")

        if submit:
            if username == DEFAULT_USERNAME and password == DEFAULT_PASSWORD:
                st.success("登录成功!")
                # 更新会话状态为已登录
                st.session_state.logged_in = True
                st.experimental_rerun()  # 重新运行脚本以显示主页面
            else:
                st.error("用户名或密码错误,请重新输入。")


if __name__ == "__main__":
    is_lite = "lite" in sys.argv
    st.set_page_config(
        "XX WebUI",
        os.path.join("img", "chatchat_icon_blue_square_v3.png"),
        initial_sidebar_state="expanded",
        menu_items={
            'About': f"""欢迎使用 XX WebUI {VERSION}"""
        }
    )

    # 如果用户已登录,则显示应用的其他部分
    if st.session_state.logged_in:
        pages = {
            "对话": {
                "icon": "chat",
                "func": dialogue_page,
            },
            "知识库管理": {
                "icon": "hdd-stack",
                "func": knowledge_base_page,
            },
        }

        with st.sidebar:
            st.image(
                os.path.join(
                    "img",
                    "chatchat_icon_blue_square_v3.png"
                ),
                use_column_width=True
            )
            st.caption(
                f"""<p align="right">当前版本:{VERSION}</p>""",
                unsafe_allow_html=True,
            )
            options = list(pages)
            icons = [x["icon"] for x in pages.values()]

            default_index = 0
            selected_page = option_menu(
                "",
                options=options,
                icons=icons,
                default_index=default_index,
            )

        if selected_page in pages:
            pages[selected_page]["func"](api=api, is_lite=is_lite)
    else:
        # 如果用户未登录,则显示登录页面
        login_page()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值