用户管理
在 Supabase Auth 中,用户是指拥有用户 ID 并存储在 Auth 模式中的个体。一旦成为用户,他们就可以获得访问令牌(Access Token),用于访问 Supabase 端点。该令牌与用户绑定,因此您可以通过行级安全策略(RLS)来限制对资源的访问。
永久用户与匿名用户
Supabase 区分永久用户和匿名用户:
- 永久用户与个人身份信息(PII)相关联,例如电子邮件地址、电话号码或第三方身份。他们可以在登出后使用这些身份重新登录账户。
- 匿名用户不与任何身份信息关联。他们拥有用户ID和个性化访问令牌,但如果登出后无法以同一用户身份重新登录。
匿名用户适用于:
- 电子商务应用,在结账前创建购物车
- 无需收集个人信息的全功能演示
- 临时或一次性账户
了解更多关于匿名用户的信息,请参阅匿名登录指南。
匿名用户不使用 anon 角色
与永久用户一样,匿名用户使用 authenticated 角色进行数据库访问。
anon 角色适用于完全没有登录且不与任何用户ID关联的用户。我们称这些为未认证用户或公共用户。
用户对象
用户对象存储了与您应用程序中用户相关的所有信息。可以通过以下方法之一获取用户对象:
supabase.auth.getUser()
- 作为管理员使用
supabase.auth.admin.getUserById()
获取用户对象
用户可以通过以下方式之一登录:
- 基于密码的方式(使用邮箱或手机号)
- 无密码方式(使用邮箱或手机号)
- OAuth
- SAML 单点登录
身份标识(identity)描述了用户可用于登录的认证方式。一个用户可以拥有多个身份标识。支持的身份标识类型包括:
- 邮箱
- 手机号
- OAuth
- SAML
拥有邮箱或手机号身份标识的用户可以通过密码或无密码方式(例如使用一次性密码(OTP)或魔法链接)登录。默认情况下,邮箱或手机号未验证的用户将无法登录。
用户对象包含以下属性:
属性 | 类型 | 描述 |
---|---|---|
id | string | 用户身份的唯一标识符 |
aud | string | 受众声明(audience claim) |
role | string | Postgres 用于执行行级安全(RLS)检查的角色声明 |
string | 用户的邮箱地址 | |
email_confirmed_at | string | 用户邮箱确认的时间戳。如果为null,表示用户的邮箱未确认 |
phone | string | 用户的手机号码 |
phone_confirmed_at | string | 用户手机号确认的时间戳。如果为null,表示用户的手机号未确认 |
confirmed_at | string | 用户邮箱或手机号确认的时间戳。如果为null,表示用户没有已确认的邮箱地址和手机号码 |
last_sign_in_at | string | 用户上次登录的时间戳 |
app_metadata | object | provider 属性表示用户首次注册时使用的身份提供商。providers 属性表示用户可用于登录的身份提供商列表 |
user_metadata | object | 默认为第一个身份提供商的标识数据,但可以包含额外的自定义用户元数据。有关身份标识对象的更多信息,请参阅用户身份 |
identities | UserIdentity[] | 包含与用户关联的身份标识对象数组 |
created_at | string | 用户创建的时间戳 |
updated_at | string | 用户最后更新的时间戳 |
is_anonymous | boolean | 如果用户是匿名用户则为true |