认证

用户管理


在 Supabase Auth 中,用户是指拥有用户 ID 并存储在 Auth 模式中的个体。一旦成为用户,他们就可以获得访问令牌(Access Token),用于访问 Supabase 端点。该令牌与用户绑定,因此您可以通过行级安全策略(RLS)来限制对资源的访问。

永久用户与匿名用户

Supabase 区分永久用户和匿名用户:

  • 永久用户与个人身份信息(PII)相关联,例如电子邮件地址、电话号码或第三方身份。他们可以在登出后使用这些身份重新登录账户。
  • 匿名用户不与任何身份信息关联。他们拥有用户ID和个性化访问令牌,但如果登出后无法以同一用户身份重新登录。

匿名用户适用于:

  • 电子商务应用,在结账前创建购物车
  • 无需收集个人信息的全功能演示
  • 临时或一次性账户

了解更多关于匿名用户的信息,请参阅匿名登录指南

用户对象

用户对象存储了与您应用程序中用户相关的所有信息。可以通过以下方法之一获取用户对象:

  1. supabase.auth.getUser()
  2. 作为管理员使用 supabase.auth.admin.getUserById() 获取用户对象

用户可以通过以下方式之一登录:

  • 基于密码的方式(使用邮箱或手机号)
  • 无密码方式(使用邮箱或手机号)
  • OAuth
  • SAML 单点登录

身份标识(identity)描述了用户可用于登录的认证方式。一个用户可以拥有多个身份标识。支持的身份标识类型包括:

  • 邮箱
  • 手机号
  • OAuth
  • SAML

用户对象包含以下属性:

属性类型描述
idstring用户身份的唯一标识符
audstring受众声明(audience claim)
rolestringPostgres 用于执行行级安全(RLS)检查的角色声明
emailstring用户的邮箱地址
email_confirmed_atstring用户邮箱确认的时间戳。如果为null,表示用户的邮箱未确认
phonestring用户的手机号码
phone_confirmed_atstring用户手机号确认的时间戳。如果为null,表示用户的手机号未确认
confirmed_atstring用户邮箱或手机号确认的时间戳。如果为null,表示用户没有已确认的邮箱地址和手机号码
last_sign_in_atstring用户上次登录的时间戳
app_metadataobjectprovider属性表示用户首次注册时使用的身份提供商。providers属性表示用户可用于登录的身份提供商列表
user_metadataobject默认为第一个身份提供商的标识数据,但可以包含额外的自定义用户元数据。有关身份标识对象的更多信息,请参阅用户身份
identitiesUserIdentity[]包含与用户关联的身份标识对象数组
created_atstring用户创建的时间戳
updated_atstring用户最后更新的时间戳
is_anonymousboolean如果用户是匿名用户则为true

相关资源