认证系统概述
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_paymentRPC 更新