一个只读的、类似字典的对象,用于访问当前用户的信息。

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()

方法

将用户信息获取为字典。

属性

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}"
}

从 Streamlit 1.42.0 版本开始,您无法使用 st.user 来检索用户的 Community Cloud 账户电子邮件。要访问用户信息,您必须设置身份提供商并在应用 secrets 中配置身份验证 ([auth])。请记住更新您的身份提供商配置和应用 secrets 以允许新的域。如果需要,可获取 Community Cloud 使用的 IP 地址列表。配置了身份验证的应用将计为您允许的单个私有应用。

将用户信息获取为字典。

此方法主要用于内部用途,在大多数情况下不需要。st.user默认情况下,返回一个继承自dict的对象。

函数签名[来源]

st.user.to_dict()

返回值

(Dict[str,str])

包含当前用户信息的一个字典。

论坛

还有问题吗?

我们的 论坛 提供丰富的有用信息和 Streamlit 专家解答。