集成 Supabase
介绍在 Apps in Toss(迷你应用)WebView 环境中集成 Supabase 的方法。Supabase JS 客户端可独立于框架运行。代码示例基于 Vite(React + TypeScript) 编写而成。
概要
Supabase 是提供认证、数据库(PostgreSQL)、文件存储、实时订阅等功能的开源后端服务。在 Apps in Toss WebView 环境中也可以同样使用,但 安全设置与环境变量管理很重要。
1. 准备
Supabase 账户(supabase.com)
使用 Vite(React + TypeScript) 创建的项目
Node.js、npm(或 yarn、pnpm)
2. 创建 Supabase 项目
在 Supabase 仪表板中 New project即可创建新项目。
设置项目名称、数据库密码和区域后完成创建。
项目准备就绪后,可在仪表板中查看以下信息。
Project URL : https://<project-id>.supabase.co
Publishable key : sb_publishable_xxxxxxxxxxxx3. 设置环境变量
建议将 Supabase 连接信息作为环境变量管理以确保安全。在项目根目录中 .env 创建文件并按如下方式填写。
4. 安装并初始化 Supabase
src/supabase/client.ts 创建文件并按如下方式初始化 Supabase 客户端。
5. 数据库使用示例
如果已初始化 Supabase 客户端,就可以在 React 组件中读取或写入数据。下面是 App.tsx中读取并保存单行数据的最简单示例。
在 Supabase 仪表板的 Table Editor中 users 创建表, id(int8,primary key)和 name(text)列。
工作方式
读取数据(
.select())users在表中id只会获取 id 为 1 的行一次。如果存在该行
name将值显示在屏幕上。
写入数据(
.upsert())将输入的姓名
users保存到表中。如果没有该行则新建,有则覆盖。
6. 安全检查清单
通过环境变量管理敏感信息
Supabase URL、publishable key 等不要直接写入代码,
.env请用环境变量管理。
不要将环境文件上传到 Git 等平台
.env文件.gitignore中一定要添加。如果密钥泄露,请立即在 Supabase 仪表板重新签发密钥。
必须设置 Row Level Security(RLS)
Supabase 的所有表默认都未启用 RLS。
在关闭 RLS 的情况下,只要有 publishable key,任何人都能访问整张表。
部署前务必启用 RLS,并设置策略(Policy)以仅允许已认证用户访问。
Supabase 仪表板 Table Editor → 选择表 → RLS 可在选项卡中进行设置。
检查来源(Origin)限制
在 Supabase 仪表板的 Authentication → URL Configuration中限制允许的域名。
只允许迷你应用(WebView)域名可预防未授权访问。