3.7 KiB
3.7 KiB
注册和登录问题快速修复指南
🔍 当前问题
- 注册时:返回 500 错误
Error sending confirmation email - 登录时:返回 400 错误
Invalid login credentials
根本原因:
ENABLE_EMAIL_AUTOCONFIRM=false- 需要邮件确认才能登录- SMTP 配置是假的(
supabase-mail,fake_mail_user),无法发送邮件 - 即使注册时邮件发送失败,用户可能已在
auth.users中创建,但因为邮箱未确认,无法登录
✅ 立即解决方案(推荐)
修改 Supabase 配置
编辑 supabase_pro/.env 文件:
## Email auth
ENABLE_EMAIL_SIGNUP=true
ENABLE_EMAIL_AUTOCONFIRM=true # 改为 true,跳过邮件验证
重启 Supabase Auth 服务
cd supabase_pro
docker-compose restart auth
验证
- 测试注册:注册新用户,应该立即可以登录
- 测试登录:使用注册的邮箱和密码登录
🔧 如果用户已创建但邮箱未确认
如果之前注册的用户因为邮件发送失败而无法登录,可以手动确认邮箱:
方法一:在 Supabase Dashboard 中手动确认
- 打开 Supabase Dashboard: http://192.168.1.61:3000
- 进入 Authentication → Users
- 找到对应的用户
- 点击用户,在详情页中点击 Confirm Email 按钮
方法二:使用 SQL 手动确认
在 Supabase Dashboard 的 SQL Editor 中执行:
-- 查找未确认的用户
SELECT id, email, email_confirmed_at, created_at
FROM auth.users
WHERE email_confirmed_at IS NULL
ORDER BY created_at DESC;
-- 手动确认邮箱(替换 'user-email@example.com' 为实际邮箱)
UPDATE auth.users
SET email_confirmed_at = NOW()
WHERE email = 'user-email@example.com'
AND email_confirmed_at IS NULL;
📝 已改进的错误处理
注册页面
- ✅ 检测邮件发送失败错误(500 + "confirmation email")
- ✅ 即使邮件发送失败,也会提示用户稍后尝试登录
- ✅ 更友好的错误提示
登录页面
- ✅ 检测邮箱未确认错误
- ✅ 检测凭证错误
- ✅ 更清晰的错误提示
🎯 推荐配置(开发环境)
## Email auth
ENABLE_EMAIL_SIGNUP=true
ENABLE_EMAIL_AUTOCONFIRM=true # 开发环境跳过邮件验证
优点:
- 注册后立即可以登录
- 无需配置 SMTP 服务
- 适合开发和测试
注意:生产环境建议使用真实的 SMTP 服务并启用邮件验证。
🔍 验证步骤
1. 检查配置是否生效
# 检查环境变量
cd supabase_pro
grep ENABLE_EMAIL_AUTOCONFIRM .env
应该显示:ENABLE_EMAIL_AUTOCONFIRM=true
2. 测试注册流程
- 在前端注册新用户
- 应该看到 "注册成功" 提示
- 自动跳转到登录页面
- 使用注册的邮箱和密码登录
- 应该可以成功登录
3. 检查数据库
-- 检查新注册的用户
SELECT id, email, email_confirmed_at, created_at
FROM auth.users
ORDER BY created_at DESC
LIMIT 5;
-- 检查 ak_users 表
SELECT id, email, username, created_at
FROM ak_users
ORDER BY created_at DESC
LIMIT 5;
🐛 如果仍然无法登录
检查用户是否已创建
-- 检查用户是否存在
SELECT id, email, email_confirmed_at, encrypted_password IS NOT NULL as has_password
FROM auth.users
WHERE email = 'your-email@example.com';
如果用户存在但未确认
使用上面的 SQL 手动确认邮箱。
如果用户不存在
重新注册,确保配置 ENABLE_EMAIL_AUTOCONFIRM=true 已生效。
📚 相关文档
EMAIL_CONFIG_FIX.md- 详细的邮件配置说明QUICK_FIX.md- 注册数据存储问题修复README.md- 用户认证相关 SQL 文件说明