feat: add supabase jwt auth context

This commit is contained in:
Codex
2026-06-29 00:17:29 +08:00
parent fbcfa5127e
commit 9553836ac7
20 changed files with 452 additions and 85 deletions

View File

@@ -11,7 +11,7 @@
目前已经完成并在本地验证通过的内容:
- Supabase/PostgreSQL 多租户数据库 schema、RLS、索引、触发器。
- `apps/api` 独立业务 API后续供 H5、Taro 小程序、管理后台统一调用。
- `apps/api` 独立业务 API后续供 H5、Taro 小程序、管理后台统一调用;已支持 Supabase Auth JWT 和迁移期 `tk_` session 双入口
- 租户后台能力:品牌、域名、公开设置、支付账户、登录配置、私密密钥掩码、活动内容、激活码、优惠券、成员权限、审计日志。
- 租户内容能力:可配置题库入口、任意深度分类树、考试意向标记、题目集合、顺序/随机/全真模拟蓝图、题目录入/更新、视频绑定、分数线、单词、知识手册、资料资源台账、题目/单词/知识手册 JSON 批量导入。
- 学生端能力:题库入口、分类树、题目集合、顺序/随机/模考 session 组卷快照、答题、错题本、收藏夹、背单词进度、个人中心、分数线、题目视频、订单、权益、激活码兑换、资料下载。
@@ -22,7 +22,7 @@
还没有达到生产交付的部分:
- 正式 Supabase Auth/JWT 鉴权还没替换迁移期请求头
- Supabase Auth/JWT 已可联调;生产前还要做真实云端 Auth/JWKS 回归、RLS 深测和自定义角色权限细化
- 真实短信、微信登录、QQ 登录、微信支付、支付宝等 provider adapter 还没接完。
- OSS/COS/Supabase Storage 上传下载签名 provider 已接入上传后校验、PDF 预览、防盗链和视频水印还没完成。
- Excel/CSV 导入、分数线/视频批量导入和异步 worker 还没完成。
@@ -143,13 +143,13 @@ apps/api/src/features/
video/ 题目视频讲解
```
迁移期 API 上下文目前使用
API 身份上下文:
- `x-tenant-id`
- `x-user-id`
- `x-platform-admin-key`
- 推荐:`Authorization: Bearer <supabase_access_token>`,可配合 `x-tenant-id` 提供当前租户上下文。
- 本地/迁移期:`Authorization: Bearer <tk_session>`
- 兼容旧测试:`x-user-id``x-platform-admin-key` 仅允许在 `ALLOW_LEGACY_AUTH_HEADERS=true``ALLOW_PLATFORM_ADMIN_KEY=true` 的非生产环境使用。
生产环境必须替换为 Supabase Auth/JWT 或服务端 session
生产环境必须设置 `ALLOW_LEGACY_AUTH_HEADERS=false``ALLOW_PLATFORM_ADMIN_KEY=false`,前端不能再传 `x-user-id` 代表当前用户
## 重要安全约定
@@ -174,8 +174,8 @@ npm run check:refactor
优先继续补:
1. Supabase Auth/JWT 正式鉴权、生产配置 fail-fast、请求体大小限制和租户隔离回归测试
1. 真实云端 Auth/JWKS 回归、RLS 深测、自定义角色模板和菜单/模块/字段级权限
2. Taro 前端 scaffold让 H5 和小程序共用同一套 API。
3. 对象存储上传后校验、PDF 预览、防盗链和视频水印。
4. Excel/CSV 以及分数线、视频批量导入;把现有 JSON 导入升级为可排队异步执行。
5. 微信/QQ 登录、短信、微信支付、支付宝支付 adapter
5. 微信网页/QQ 登录、退款对账、CRM worker、公共题库授权和租户采纳