用途
本技能用于通过 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