一个只读的、类似字典的对象,用于访问当前用户的信息。
st.user取决于运行 Streamlit 应用的主机平台。如果您的主机平台未配置此对象,st.user其行为将与在本地运行的应用中的行为相同。
当在secrets.toml中配置了身份验证,Streamlit 将解析 OpenID Connect (OIDC) 身份令牌,并将属性复制到st.user。请查阅您的提供商文档以了解其可用属性(称为声明)。
如果未配置身份验证,st.user没有属性。
您可以通过键或属性记法访问值。例如,使用st.user["email"]或st.user.email访问email属性。
重要事项
身份令牌包含签发时间和过期时间。Streamlit 不会隐式检查这些。如果您想自动终止用户的身份验证,请手动检查这些值,并在需要时通过编程方式注销您的用户 (st.logout())。
类描述[来源] | |
---|---|
st.user() | |
方法 | |
to_dict() | 将用户信息获取为字典。 |
属性 | |
is_logged_in (bool) | 用户是否已登录。对于在本地运行的应用,仅当在st.login()中配置了身份验证 (secrets.toml) 时,此属性才可用。否则,它不存在。 |
示例
示例 1:Google 的身份令牌
如果您配置了基本的 Google OIDC 连接,如st.login()示例 1 所示,以下数据可在st.user中获取。Streamlit 添加了is_logged_in属性。根据用户 Google 账户的配置,可能还有其他属性。有关 Google 身份令牌的更多信息,请参阅 Google 文档中的从 ID 令牌获取用户信息。
您的应用代码
import streamlit as st if st.user.is_logged_in: st.write(st.user)
用户登录时显示的数据
{ "is_logged_in":true "iss":"https://#" "azp":"{client_id}.apps.googleusercontent.com" "aud":"{client_id}.apps.googleusercontent.com" "sub":"{unique_user_id}" "email":"{user}@gmail.com" "email_verified":true "at_hash":"{access_token_hash}" "nonce":"{nonce_string}" "name":"{full_name}" "picture":"https://lh3.googleusercontent.com/a/{content_path}" "given_name":"{given_name}" "family_name":"{family_name}" "iat":{issued_time} "exp":{expiration_time} }
示例 2:Microsoft 的身份令牌
如果您配置了基本的 Microsoft OIDC 连接,如st.login()示例 1 所示,以下数据可在st.user示例 2 所示。有关 Microsoft 身份令牌的更多信息,请参阅 Microsoft 文档中的ID 令牌声明参考。
您的应用代码
import streamlit as st if st.user.is_logged_in: st.write(st.user)
用户登录时显示的数据
{ "is_logged_in":true "ver":"2.0" "iss":"https://login.microsoftonline.com/{tenant_id}/v2.0" "sub":"{application_user_id}" "aud":"{application_id}" "exp":{expiration_time} "iat":{issued_time} "nbf":{start_time} "name":"{full_name}" "preferred_username":"{username}" "oid":"{user_GUID}" "email":"{email}" "tid":"{tenant_id}" "nonce":"{nonce_string}" "aio":"{opaque_string}" }
Community Cloud
从 Streamlit 1.42.0 版本开始,您无法使用 st.user
来检索用户的 Community Cloud 账户电子邮件。要访问用户信息,您必须设置身份提供商并在应用 secrets 中配置身份验证 ([auth]
)。请记住更新您的身份提供商配置和应用 secrets 以允许新的域。如果需要,可获取 Community Cloud 使用的 IP 地址列表。配置了身份验证的应用将计为您允许的单个私有应用。
函数签名[来源] | |
---|---|
st.user.to_dict() | |
返回值 | |
(Dict[str,str]) | 包含当前用户信息的一个字典。 |
还有问题吗?
我们的 论坛 提供丰富的有用信息和 Streamlit 专家解答。