令牌机制与会话管理:JWT 与刷新令牌 登录成功后,「登录态」靠什么维持?答案是令牌(Token)。Supabase Auth 采用业界主流的 JWT(JSON Web Token) 方案,配合刷新令牌实现长期会话。理解令牌机制,是排查认证问题、设计安全策略的关键。 什么是 JWT JWT 是一种紧凑的、自包含的令牌格式,本质上是一段经过签名的字符串。它由三部分组成: 头部(Header):说明令牌类型与签名算法。 载荷(Payload):携带关于用户的关键信息,如用户 id、邮箱、过期时间、角色等。 签名(Signature):用密钥对头部与载荷签名,防止内容被篡改。 三部分用点号连接,形如 。
登录成功后,「登录态」靠什么维持?答案是令牌(Token)。Supabase Auth 采用业界主流的 JWT(JSON Web Token) 方案,配合刷新令牌实现长期会话。理解令牌机制,是排查认证问题、设计安全策略的关键。
JWT 是一种紧凑的、自包含的令牌格式,本质上是一段经过签名的字符串。它由三部分组成:
三部分用点号连接,形如 header.payload.signature。
JWT 的关键特性是自包含:令牌本身就携带了用户身份信息,服务端解析令牌即可知道「是谁」,无需每次都去查询数据库。这让它非常适合分布式、无状态的认证场景。
JWT 的签名机制确保了「令牌一旦签发,任何人都无法伪造或篡改其内容」:
因此,保护 JWT 签名密钥的安全至关重要。在 Supabase 中,这个密钥由平台托管,开发者无需直接管理,但务必保管好项目密钥,不要泄露。
为了兼顾安全与体验,Supabase 采用「双令牌」模式:
两者的协作流程如下:
这种设计让用户长期保持登录,同时把敏感令牌的有效期压到最短,是安全与体验的平衡。
一个完整的会话生命周期:
Supabase 的客户端库会自动处理第 2、3 步——你登录一次后,库会在后台续期,开发者通常只在「需要判断登录状态」时关心令牌。
JWT 载荷中除了用户 id,还携带**角色(role)**信息,这在 Supabase 安全模型中至关重要:
第 5 章的行级安全策略,正是通过读取 JWT 中的用户 id 与角色来做权限判断。因此理解「JWT 里有什么」,就理解了「RLS 能基于什么做判断」。
令牌等同于登录态,其存储位置直接影响安全:
登出不仅是「前端清除令牌」,正规做法是通知 Auth 服务撤销会话,使刷新令牌失效。这样即使令牌曾被泄露,也无法继续续期。Supabase 提供登出接口完成这一动作。
此外,对于可疑活动,可主动撤销用户的所有会话,强制其重新登录。
JWT 是自包含、签名的访问令牌,配合刷新令牌实现「短期安全 + 长期会话」的平衡。令牌载荷中的用户 id 与角色,是第 5 章 RLS 做权限判断的依据。理解令牌的生命周期与安全存储,你就能驾驭整套认证状态。下一节进入用户管理与多因素认证,把安全再加固一层。