Logo花火漫画开发文档

认证系统概述

Supabase Auth 邮箱密码认证与 profiles 用户扩展表

认证方式

HanabiManga 使用 Supabase Auth 进行身份认证,仅支持邮箱 + 密码登录,不提供第三方 OAuth。

认证流程

注册

用户输入邮箱和密码

Supabase Auth 创建 auth.users 记录

触发器自动创建 public.profiles 记录

发送确认邮件

用户点击确认链接 → 账号激活

登录

用户输入邮箱和密码

Supabase Auth 验证凭证

返回 JWT(access_token + refresh_token)

客户端保存 Token,后续请求通过 Authorization 头携带

数据模型

auth.users(系统表)

由 Supabase Auth 自动管理,关键字段:

Prop

Type

public.profiles(用户扩展表)

通过触发器在用户注册时自动创建,id 外键关联 auth.users.id。这是业务层使用的主要用户信息表。

Prop

Type

两张表的关系

auth.users (Supabase 管理)          public.profiles (业务层)
┌──────────────────────┐           ┌──────────────────────────┐
│ id (PK)              │ ←──1:1──→ │ id (PK, FK → auth.users) │
│ email                │           │ username                 │
│ encrypted_password   │           │ display_name             │
│ app_metadata.role    │           │ avatar_url               │
│ ...                  │           │ banner_url               │
└──────────────────────┘           │ vip_expiration_date      │
                                   │ total_donated_amount     │
                                   │ ...                      │
                                   └──────────────────────────┘
  • 角色信息存储在 auth.users.app_metadata.role,只能通过 Admin API 修改
  • 用户个人信息存储在 public.profiles,受 RLS 保护,用户可修改自己的昵称/头像等
  • VIP 状态通过 profiles.vip_expiration_date 判定,由支付系统的 confirm_payment RPC 更新

On this page