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
我最近尝试使用 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