身份认证体系概览:认证与授权的区别 在深入具体登录方式之前,必须先澄清一个被频繁混淆的概念——认证(Authentication)与授权(Authorization)。这一字之差,决定了你对整个安全体系的理解是否正确。 认证 vs 授权:你是谁 vs 你能做什么 认证(Authentication,常缩写为 AuthN):回答「你是谁」,即验证用户的身份。典型动作是登录——你声称自己是某个邮箱的主人,系统通过密码或第三方验证这个声称是否成立。 授权(Authorization,常缩写为 AuthZ):回答「你能做什么」,即决定一个已认证的用户拥有哪些权限。典型问题是「这个用户能看这笔订单吗?」「他能删除这篇文章吗?
在深入具体登录方式之前,必须先澄清一个被频繁混淆的概念——认证(Authentication)与授权(Authorization)。这一字之差,决定了你对整个安全体系的理解是否正确。
一个简单的类比:认证是出示身份证证明你是张三,授权是门禁系统判断张三能不能进这间机房。两者前后衔接——先认证,后授权。
在 Supabase 体系里,这两个职责由不同部分承担:
理清这一点很重要:Supabase 的 Auth 解决「是谁」,RLS 解决「能做什么」。它们协作完成完整的安全链路,但职责分明。常见误区是想用 Auth 直接控制「能不能看某行数据」——这不是 Auth 的职责,而应交给 RLS。
Supabase Auth 的一大特色是用户数据存储在数据库的专用模式中(一张通常名为 auth.users 的表)。这意味着:
这种「认证即数据」的设计,是 Supabase 区别于把用户体系封闭在外的 BaaS 的关键,也是它安全模型强大的根源。
任何认证流程都包含三个要素:
不同登录方式的差异,本质上是这三要素的不同组合。下一节将逐一展开各类登录方式。
现代应用通常要同时支持 Web、移动端、小程序等多种客户端。Supabase Auth 的设计是端无关的:无论哪种客户端,都用同一套用户体系、同一套令牌机制。一个用户在 Web 注册后,可用同样的邮箱密码在 App 登录;不同端的会话相互独立但共享同一身份。
这种统一性简化了多端开发——你不需要为每种端各搭一套用户系统,所有端共用 Supabase Auth。
在进入具体登录方式前,先确立几条贯穿全章的安全原则:
认证回答「你是谁」,授权回答「你能做什么」;在 Supabase 中,前者由 Auth 负责,后者主要由 RLS 负责,而用户数据本身存储在数据库中,让两者无缝衔接。建立这个概念框架后,下一节我们将逐一认识各类登录方式,看看「认证」具体是如何落地的。