文章目录
一、身份认证与用户信息组件
1. st.login:发起OIDC登录授权
功能说明
触发OpenID Connect(OIDC)第三方登录流程,跳转至谷歌、微软、Okta等身份服务商完成账号验证,登录成功后带回应用并保存用户身份Cookie,需提前在secrets.toml配置认证服务商参数。
核心参数
provider:服务商配置名,不传则读取默认[auth]配置;传入字符串则读取[auth.服务商名]独立配置。
前置依赖与限制
- 需要安装
Authlib>=1.3.2依赖库 - 本地开发与线上部署必须同步修改
redirect_uri回调地址 - 不支持内嵌应用(嵌入式iframe)登录
- 浏览器多标签页共享登录会话,关闭页面30天未登出Cookie自动过期
基础示例
python
import streamlit as st
# 判断用户未登录,展示登录按钮
if not st.experimental_user.is_logged_in:
if st.button("登录账号"):
st.login()
else:
st.write(f"欢迎你,{st.experimental_user.name}")
2. st.logout:用户登出操作
功能说明
清除浏览器本地身份Cookie、清空st.experimental_user用户信息,页面刷新回到首页,创建全新会话;不会退出第三方身份服务商的账号。
使用注意
同一浏览器多标签登录时,仅执行登出操作的当前会话会清除用户信息,其他已打开标签不受影响,刷新后才会同步登出状态。
基础示例
python
import streamlit as st
if st.experimental_user.is_logged_in:
if st.button("退出登录"):
st.logout()
3. st.experimental_user:读取当前登录用户信息(文档简写st.user)
功能说明
只读字典式对象,解析OIDC身份令牌,获取当前登录用户的全部身份信息(邮箱、姓名、唯一ID、头像等),仅配置OIDC登录后生效。
核心属性
| 属性 | 作用 |
|---|---|
is_logged_in |
布尔值,判断用户是否完成登录 |
name |
用户昵称/全名 |
email |
用户绑定邮箱 |
picture |
用户头像链接 |
内置方法
.to_dict():将全部用户信息转为标准字典返回
基础示例
python
import streamlit as st
if st.experimental_user.is_logged_in:
# 打印完整用户信息
st.json(st.experimental_user.to_dict())
# 单独读取用户邮箱与姓名
st.write("用户名:", st.experimental_user.name)
st.write("登录邮箱:", st.experimental_user.email)