用途
Supabase Auth 技能用于设置和管理 Supabase 项目的身份验证功能,包括项目连接、令牌配置、登录方式以及用户管理。当需要配置 Supabase 访问权限或实现认证流程时,可使用该技能。
主要能力
- CLI 操作:安装 Supabase CLI(
npm install supabase --save-dev)、登录(supabase login)、链接项目(supabase link --project-ref <ref>)、检查状态(supabase status)。 - 获取项目信息:通过 Dashboard → Settings → API 获取项目 URL、anon key 和 service key(默认隐藏)。
- 环境变量配置:提供所有 Supabase 操作所需的环境变量,包括
SUPABASE_URL、SUPABASE_ANON_KEY、SUPABASE_SERVICE_ROLE_KEY(仅服务端使用,切勿暴露客户端),以及 CI/CD 管道所需的SUPABASE_ACCESS_TOKEN、SUPABASE_DB_PASSWORD、SUPABASE_PROJECT_ID。 - 客户端初始化:提供浏览器/客户端侧和服务端(使用 service role)的初始化代码示例。
- 认证方法:支持邮箱/密码注册与登录、魔法链接(无密码)、OAuth 提供商(如 GitHub、Google、Discord 等)、匿名登录。
- 会话管理:获取当前会话(本地存储快速获取或服务端验证)、监听认证状态变化(SIGNED_IN、SIGNED_OUT、TOKEN_REFRESHED、USER_UPDATED)。
- 密码恢复:请求重置密码邮件及更新密码。
- 管理操作(仅服务端):创建用户(可绕过邮箱确认)、删除用户、更新用户、列出用户。
使用方式
- 安装并登录 Supabase CLI,链接项目。
- 配置环境变量,区分客户端与服务端密钥。
- 根据场景选择认证方法,调用相应 API(如
signUp、signInWithPassword、signInWithOtp、signInWithOAuth、signInAnonymously)。 - 使用
getSession或getUser管理会话,通过onAuthStateChange监听状态变化。 - 服务端管理操作需使用 service role key 初始化客户端。
适用场景
- 在 Supabase 项目中配置认证流程。
- 管理用户账户(创建、删除、更新、列表)。
- 集成 CI/CD 管道进行自动化部署。
- 实现多种登录方式(邮箱、魔法链接、OAuth、匿名)。
限制与安全注意事项
- 切勿暴露 service role key,它会绕过行级安全(RLS)。
- 服务端授权应使用
getUser(),不要信任getSession()。 - 角色应使用
app_metadata,user_metadata可被用户编辑。 - 所有表应启用 RLS,否则任何人可访问数据。
- 更多细节可参考 auth-methods.md、session-management.md、mfa-setup.md。