Streamlit 中的登录页面问题

Login page issue in Streamlit

我最近尝试使用 Streamlit 开发一个简单的网络应用程序。我可以轻松快速地创建它,但是当我尝试在 Heroku(免费测功机)中部署它时,当我想创建身份验证或登录页面时遇到问题。起初,我认为这是成功的,直到我意识到网络应用程序在与应用程序交互后不断迭代所有代码。然后,我尝试应用 subprocess 但我认为由于 Heroku 政策,我无法生成另一个测功机。

我能做些什么来解决这个问题吗?

这是我目前所做的:

import streamlit as st
import subprocess

def id_authenticated(username):
    return username == "******"

def pw_authenticated(password):
    return password == "*****"

def generate_login_block():
    block1 = st.empty()
    block2 = st.empty()
    block3 = st.empty()
    block4 = st.empty()
    return block1, block2, block3, block4

def clean_blocks(blocks):
    for block in blocks:
        block.empty()

def login(blocks):
    blocks[0].markdown("""
        <style>
            input {
                -webkit-text-security: none;
            }
        </style>
        """, unsafe_allow_html=True)

    blocks[0].markdown("""
        <style>
            input {
                -webkit-text-security: none;
            }
        </style>
        """, unsafe_allow_html=True)

    return blocks[1].text_input("Username:"), blocks[3].text_input('Password:', value = "", type = "password")

login_blocks = generate_login_block()
username, password = login(login_blocks)
login_button = st.button("Log In")


if login_button & id_authenticated(username) & pw_authenticated(password):
    st.success("You are logged in")
    subprocess.Popen(["streamlit", "run", "app.py"])
elif login_button:
    st.error("Please input valid username and/or password")

对于最小的身份验证设置,您可以使用代码 here