RDS Supabase的认证模块(Authentication)提供了一个功能全面的用户管理系统,支持多种认证方式,并可作为独立模块集成至您的应用程序中。
基本操作
创建新用户
邮箱注册。
要启用邮箱注册功能,您首先需要在阿里云控制台的Supabase Auth配置中设置您的邮件服务器(SMTP)信息。这需要配置以下参数:
GOTRUE_SMTP_PORT # SMTP端口:发送邮件使用的SMTP服务器端口号(如587、465) GOTRUE_EXTERNAL_EMAIL_ENABLED # 启用外部邮箱登录:是否允许用户使用电子邮件进行注册和登录 GOTRUE_SMTP_SENDER_NAME # 邮件发件人姓名:显示在邮件中的发件人名称(例如:"Supabase 支持团队") GOTRUE_SMTP_USER # SMTP用户名:用于登录SMTP服务器的用户名(通常是邮箱地址) GOTRUE_SMTP_PASS # SMTP密码:用于登录SMTP服务器的密码或应用专用密码 GOTRUE_SMTP_ADMIN_EMAIL # 管理员邮箱:系统邮件的管理员收件邮箱或发件邮箱地址 GOTRUE_SMTP_HOST # SMTP主机:SMTP服务器地址(如smtp.gmail.com 或 smtp.mailgun.org) GOTRUE_MAILER_AUTOCONFIRM # 邮箱自动确认:是否跳过邮箱验证,自动确认用户(开发环境常用) GOTRUE_SITE_URL # 网站前端地址:用户操作后重定向的目标前端页面URL(如密码重置后跳转) API_EXTERNAL_URL # API外部访问地址:外部可访问的API地址(如 https://api.xxx.com),用于回调或通知配置完成后,通过以下方法调用:
const { data, error } = await supabase.auth.signUp({ email: 'example@email.com', password: 'example-password', })手机号注册。
手机号注册,有两种方式,一种是SMS Webhook,一种是阿里云SMS Provider。
SMS Webhook:需要配置一个SMS发送服务的Webhook。Supabase将调用此Hook来发送验证短信。请在阿里云控制台的Supabase Auth配置中设置以下参数:
GOTRUE_HOOK_SEND_SMS_ENABLED # 是否开启SMS短信发送功能 GOTRUE_HOOK_SEND_SMS_URI # 需要提供一个发送确认短信的https服务地址 GOTRUE_HOOK_SEND_SMS_SECRETS # 是一个hook的密钥,有格式要求,以v1,whsec_开头的base64编码 GOTRUE_SMS_AUTOCONFIRM=false # SMS是否自动确认 GOTRUE_SMS_OTP_EXP=60 # SMS OTP有效时间,单位为秒阿里云SMS Provider:需要配置阿里云SMS服务的签名和模板,以及阿里云有SMS服务权限(AliyunDysmsFullAccess和AliyunDypnsFullAccess)的AK/SK。
GOTRUE_SMS_PROVIDER=aliyun # SMS提供商,可配置为 aliyun GOTRUE_SMS_ALIYUN_ACCESS_KEY_ID=xxx # 阿里云access key GOTRUE_SMS_ALIYUN_ACCESS_KEY_SECRET=xxx # 阿里云 access secret GOTRUE_SMS_ALIYUN_REGION_ID=cn-beijing # 阿里云SMS地域,可以与supabase配置为同地域 GOTRUE_SMS_ALIYUN_SIGN_NAME=速通互联验证码。 # 阿里云SMS签名名称 GOTRUE_SMS_ALIYUN_TEMPLATE_CODE=100001 # 阿里云SMS 模板CODE GOTRUE_SMS_ALIYUN_IS_TEST=true # 如果用阿里云SMS系统自带的签名和模板(https://dypns.console.aliyun.com/smsServiceOverview),则需要将GOTRUE_SMS_ALIYUN_IS_TEST配置为true;如果使用自己的签名和模板,则无需配置该参数或者将其配置为false GOTRUE_SMS_AUTOCONFIRM=false # SMS是否自动确认 GOTRUE_SMS_OTP_EXP=60 # SMS OTP有效时间,单位为秒说明当SMS Webhook和阿里云SMS Provider都配置时,因SMS Webhook优先级更高,则会生效SMS Webhook的方式。
配置完成后,通过以下方法调用:
const { data, error } = await supabase.auth.signUp({ phone: '1381111****', password: 'example-password', options: { channel: 'sms' } })支付宝认证。
要启用支付宝登录,您需要在阿里云控制台的Supabase Auth配置中设置以下参数:
GOTRUE_EXTERNAL_ALIPAY_ENABLED # 是否启用支付宝登录 GOTRUE_EXTERNAL_ALIPAY_CLIENT_ID # 支付宝应用的 AppID GOTRUE_EXTERNAL_ALIPAY_SECRET # 支付宝应用的 AppSecret GOTRUE_EXTERNAL_ALIPAY_REDIRECT_URI # 授权回调地址;格式:http(s)://your-supabase-url/auth/v1/callback配置完成后,通过以下方法调用:
const { data, error } = await supabase.auth.signInWithOAuth({ provider: 'alipay', })微信认证。
要启用微信登录,您需要在阿里云控制台的Supabase Auth配置中设置以下参数:
GOTRUE_EXTERNAL_WECHAT_ENABLED # 是否启用微信登录 GOTRUE_EXTERNAL_WECHAT_CLIENT_ID # 微信应用的 AppID GOTRUE_EXTERNAL_WECHAT_SECRET # 微信应用的 AppSecret GOTRUE_EXTERNAL_WECHAT_REDIRECT_URI # 授权回调地址;格式:http(s)://your-supabase-url/auth/v1/callback配置完成后,通过以下方法调用:
const { data, error } = await supabase.auth.signInWithOAuth({ provider: 'wechat', })谷歌认证。
要启用谷歌登录,您需要在阿里云控制台的Supabase Auth配置中设置以下参数:
GOTRUE_EXTERNAL_GOOGLE_ENABLED # 是否启用谷歌登录 GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID # 谷歌OAuth 客户端 ID GOTRUE_EXTERNAL_GOOGLE_SECRET # 谷歌OAuth 客户端密钥 GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI # 授权回调地址;格式:http(s)://your-supabase-url/auth/v1/callback配置完成后,通过以下方法调用:
const { data, error } = await supabase.auth.signInWithOAuth({ provider: 'google', })GitHub认证。
要启用GitHub登录,您需要在阿里云控制台的Supabase Auth配置中设置以下参数:
GOTRUE_EXTERNAL_GITHUB_ENABLED # 是否启用GITHUB登录 GOTRUE_EXTERNAL_GITHUB_CLIENT_ID # GitHub OAuth App 的 Client ID GOTRUE_EXTERNAL_GITHUB_SECRET # GitHub OAuth App 的 Client Secret GOTRUE_EXTERNAL_GITHUB_REDIRECT_URI # 授权回调地址;格式:http(s)://your-supabase-url/auth/v1/callback配置完成后,通过以下方法调用:
const { data, error } = await supabase.auth.signInWithOAuth({ provider: 'github', })
登录用户
使用邮箱和密码,或手机号和密码,或支付宝认证第三方认证来登录用户。
// 邮箱登录
const { data, error } = await supabase.auth.signInWithPassword({
email: 'example@email.com',
password: 'example-password',
})
// 手机号登录
const { data, error } = await supabase.auth.signInWithPassword({
phone: '+1381111****',
password: 'some-password',
})
// OAuth 第三方登录
const { data, error } = await supabase.auth.signInWithOAuth({
provider: 'provider_name'
})
// provider 可选值:
// 'alipay' - 支付宝登录
// 'wechat' - 微信登录
// 'google' - 谷歌登录
// 'github' - GitHub登录更新用户
更新已登录用户的个人信息。请注意,用户必须处于登录状态才能调用 updateUser() 方法。
// 更新邮箱
const { data, error } = await supabase.auth.updateUser({
email: 'new****@email.com'
})
// 更新密码
const { data, error } = await supabase.auth.updateUser({
password: 'new password'
})注销用户
注销当前登录的用户。
const { error } = await supabase.auth.signOut()相关文档
了解更多Supabase认证的详细信息,请参见Auth。
Supabase JavaScript SDK请参见JavaScript。
手机号登录更多信息请参见phone-login。
SMS Hook更多信息请参见SMS Hook。