Codex Supabase插件实战:快速搭建数据库与鉴权API详解【操作】
最近好几个朋友都在打听一件事:能不能用Codex快速搭一个带用户注册、登录、文件管理的后端,还不用手写SQL和鉴权逻辑?答案是可以的,而且比你想象的要顺滑得多——核心思路就是把Supabase插件拉进来,自动完成数据库建模、RLS策略配置和邮箱验证流程。
简单来说,Codex通过Supabase插件,能帮你自动建表(users、files、file_shares),配置RLS策略,启用邮箱验证,对接Resend邮件服务,最后还能顺手生成TypeScript SDK和一份像样的OpenAPI文档。一套下来,从零到能调用的API,基本就是一杯茶的功夫。

启动Codex并启用Supabase插件
打开Codex桌面App,用ChatGPT账号登录。首次启动时选择“编程”用途,系统会自动加载开发插件集。在左侧插件栏找到Supabase图标,点击启用——这里需要提醒一下:插件启用后必须重启Codex才能生效,别忽略这一步。
重启后进入新建项目页,输入需求:“搭建一个支持邮箱注册、文件上传、用户专属文件列表的后端服务”。Codex会自动识别需要调用Supabase插件,并提示你连接Supabase账户。
绑定Supabase账号并创建项目
绑定方式有两种,看你习惯走哪条路。
方法一:GitHub快捷绑定
点击插件面板中的“Connect Supabase”,选择“Continue with GitHub”,授权访问组织权限。Codex会自动跳转到Supabase控制台完成OAuth回调,整个过程不需要手动复制粘贴URL,很省心。
方法二:手动凭证绑定
登录supabase.com → 创建新组织(名称随意,Plan选Free就行)→ 点击“New Project” → 填写Project Name(比如codex-file-api)、Password(务必记住)、Region(推荐Singapore)→ 创建完成。返回Codex,在插件设置中粘贴Project URL和anon public密钥。
这里有个硬性提醒:Password一旦设置就无法查看,丢了就只能重置项目,数据库直连也走不通。
自动生成数据库表与RLS策略
这一步最省事。在Codex对话框输入:“为文件管理系统生成三张表:users(继承auth.users)、files(含user_id、name、path、size、created_at)、file_shares(含file_id、shared_to_id、role)”。
然后等着就行。Codex会调用Supabase SQL Editor API,自动生成包含UUID主键、外键约束和默认值的建表语句,并直接执行。紧接着,它会为files表启用RLS,插入一条策略:每个用户只能SELECT、INSERT、UPDATE自己user_id匹配的记录。最后,插件同步在Supabase Studio的Authentication → Providers中勾选Email登录,同时开启Confirm Email功能。
这一步走完,用户注册、登录、密码重置这些基础能力就都有了,全程没碰过一行策略SQL或Auth配置开关。
配置Resend邮件服务替代默认SMTP
默认的邮件服务送达率不太稳定,所以这里需要换成Resend。操作也不复杂:在Codex插件面板点击“Email Setup” → 选择“Resend” → 输入Resend API Key(需要提前在resend.com注册并验证域名)。
Codex会自动完成三件事:在Supabase项目Settings → Auth → Email Providers中开启Custom SMTP,填入Resend的smtp.resend.com:587、用户名api、密码(你的Resend Key),然后保存并覆盖默认邮件服务。从此所有注册确认邮件和密码重置邮件都会通过Resend发送,送达率明显提升,也不太容易进垃圾箱了。
生成前端可调用的API文档与SDK初始化代码
最后一步,输入指令:“输出一份供React前端使用的初始化代码、注册/登录/上传文件的完整调用示例,包含错误处理和Loading状态”。
Codex会调用Supabase JS SDK元数据,生成一段完整的TypeScript代码块,包含createClient、signUp、signInWithPassword、upload、from('files').select()这些核心调用。同时还会生成一份OpenAPI 3.0格式的API文档JSON,其中定义了/auth/signup、/auth/login、/storage/upload等路径。最后,文档自动导出为docs/openapi.json,项目根目录下也会生成supabase/client.ts。
到了这一步,前端的同学拿过来就能直接开搞,后端的基本架子已经稳稳立住了。