SuperAPI AI 工具集

supabase-auth

安全与审计

查看项目

更新于 10-15 15:42

技能介绍

用途

本技能用于通过 Supabase Auth API 执行身份认证与用户管理操作,适用于需要在 Supabase 项目中处理注册、登录、登出、密码重置以及用户管理的场景。

主要能力

  • 注册:支持基础邮箱/密码注册、携带用户元数据注册,以及使用 service role key 自动确认用户。
  • 登录:支持邮箱/密码登录,返回 access_token、refresh_token、user 对象和 expires_in。
  • 获取当前用户:使用 access token 检索用户信息。
  • 更新用户:支持更新用户元数据、邮箱和密码。
  • 登出:使 refresh token 失效。
  • 刷新令牌:使用 refresh token 获取新的 access token。
  • 密码恢复:发送密码重置邮件,并使用恢复令牌重置密码。
  • 重发确认邮件:重新发送邮箱验证邮件。
  • 管理员操作(需 service role key):列出所有用户、分页获取用户列表、按 ID 获取用户、创建用户、更新用户、删除用户。

使用方式

前置条件:需要设置环境变量:

export SUPABASE_URL="https://your-project.supabase.co" export SUPABASE_KEY="your-anon-or-service-role-key"

并加载共享辅助脚本:

source "$(dirname "${BASH_SOURCE[0]}")/../../scripts/supabase-api.sh"

常见操作示例:

注册:

supabase_post "/auth/v1/signup" '{ "email": "user@example.com", "password": "securepassword123" }'

登录:

response=$(supabase_post "/auth/v1/token?grant_type=password" '{ "email": "user@example.com", "password": "securepassword123" }') access_token=$(echo "$response" | jq -r '.access_token') refresh_token=$(echo "$response" | jq -r '.refresh_token')

获取当前用户:

curl -s -X GET
"${SUPABASE_URL}/auth/v1/user"
-H "apikey: ${SUPABASE_KEY}"
-H "Authorization: Bearer ${ACCESS_TOKEN}"

更新用户元数据:

curl -s -X PUT
"${SUPABASE_URL}/auth/v1/user"
-H "apikey: ${SUPABASE_KEY}"
-H "Authorization: Bearer ${ACCESS_TOKEN}"
-H "Content-Type: application/json"
-d '{ "data": { "first_name": "Jane", "avatar_url": "https://example.com/avatar.jpg" } }'

登出:

curl -s -X POST
"${SUPABASE_URL}/auth/v1/logout"
-H "apikey: ${SUPABASE_KEY}"
-H "Authorization: Bearer ${ACCESS_TOKEN}"

刷新令牌:

supabase_post "/auth/v1/token?grant_type=refresh_token" '{ "refresh_token": "'"${REFRESH_TOKEN}"'" }'

密码恢复:

supabase_post "/auth/v1/recover" '{ "email": "user@example.com" }'

管理员操作(需 service role key):

列出所有用户:

supabase_get "/auth/v1/admin/users"

分页用户列表:

supabase_get "/auth/v1/admin/users?page=1&per_page=50"

按 ID 获取用户:

supabase_get "/auth/v1/admin/users/${USER_ID}"

创建用户:

supabase_post "/auth/v1/admin/users" '{ "email": "admin-created@example.com", "password": "securepassword123", "email_confirm": true, "user_metadata": { "first_name": "Admin", "last_name": "Created" } }'

删除用户:

supabase_delete "/auth/v1/admin/users/${USER_ID}"

适用场景

  • 在脚本或自动化流程中完成 Supabase 用户注册、登录与登出。
  • 管理用户元数据、邮箱和密码。
  • 实现密码恢复与邮箱确认重发流程。
  • 使用 service role key 执行管理员级别的用户查询、创建、更新与删除。

限制与注意事项

  • 管理员操作需要 service role key,且不应暴露给客户端。
  • 客户端操作应使用 anon key。
  • 令牌应存储在环境变量或安全文件中,不应提交凭据。
  • 建议实现令牌刷新,并在服务端验证令牌。
  • 建议在 Supabase 仪表板中启用 RLS 并配置行级安全策略。
  • 默认令牌有效期:access token 为 1 小时,refresh token 为 30 天。
  • 常见错误包括:400 无效登录凭据、400 用户已注册、401 无效令牌、422 验证错误、429 请求过多。
  • 完整 API 文档:https://supabase.com/docs/guides/auth