4.8 KiB
4.8 KiB
🔐 认证系统设置指南
📋 当前状态总结
您的登录系统现在已经完全接入Supabase数据库,不再使用硬编码验证。
✅ 已完成的修改
-
登录页面更新 (
pages/login.vue
)- 移除了硬编码的测试账户验证
- 集成了真正的Supabase认证逻辑
- 使用
useAuth()
组合式函数进行认证
-
环境配置修复 (
.env
)- 删除了重复的
SUPABASE_ANON_KEY
配置 - 确保配置文件格式正确
- 删除了重复的
-
管理员账户脚本 (
database/create-admin.sql
)- 创建了完整的管理员账户初始化脚本
- 包含密码加密和数据库表结构
🚀 部署步骤
第一步:初始化数据库
- 登录您的 Supabase Dashboard
- 选择项目:
riwtulmitqioswmgwftg
(Twilio项目) - 打开 SQL编辑器
- 复制并运行以下脚本:
A. 运行管理员账户创建脚本
-- 复制 database/create-admin.sql 的完整内容并运行
B. 运行订单系统初始化脚本
-- 复制 database/init.sql 的完整内容并运行
第二步:验证数据库设置
运行以下查询验证设置:
-- 检查管理员账户
SELECT * FROM admin_users WHERE username = 'admin@example.com';
SELECT * FROM profiles WHERE email = 'admin@example.com' AND role = 'admin';
-- 检查订单相关表
SELECT 'orders' as table_name, COUNT(*) as count FROM orders
UNION ALL
SELECT 'users' as table_name, COUNT(*) as count FROM users
UNION ALL
SELECT 'interpreters' as table_name, COUNT(*) as count FROM interpreters
UNION ALL
SELECT 'service_rates' as table_name, COUNT(*) as count FROM service_rates;
第三步:启动应用
# 安装依赖(如果还没有)
npm install
# 启动开发服务器
npm run dev
第四步:测试登录
- 访问
http://localhost:3000
- 系统会自动跳转到登录页面
- 使用以下管理员账户登录:
- 用户名:
admin@example.com
- 密码:
admin123
- 用户名:
🔍 认证流程说明
登录验证流程
- 用户输入 → 用户名/密码
- 优先检查 →
admin_users
表(管理员账户) - 密码验证 → 使用 bcrypt 验证加密密码
- 备用检查 →
profiles
表(普通用户中的管理员) - 权限验证 → 确保用户具有
admin
角色 - 会话管理 → 保存用户信息到本地存储
- 页面跳转 → 跳转到仪表板
数据库表结构
admin_users 表
id
: UUID 主键username
: 用户名(邮箱)password_hash
: bcrypt 加密密码role
: 用户角色(admin)full_name
: 全名email
: 邮箱地址
profiles 表
id
: UUID 主键email
: 邮箱地址role
: 用户角色(customer/interpreter/admin)full_name
: 全名- 其他用户信息字段...
🛠️ 故障排除
常见问题
-
登录失败:"用户名或密码错误"
- 确认管理员账户已创建:
admin@example.com
/admin123
- 检查
admin_users
表是否有数据 - 验证密码哈希是否正确
- 确认管理员账户已创建:
-
登录失败:"只有管理员可以访问后台系统"
- 确认用户在
profiles
表中的role
为admin
- 检查 RLS 策略是否正确设置
- 确认用户在
-
无法连接数据库
- 检查
.env
文件配置 - 验证 Supabase URL 和 API Key
- 确认网络连接正常
- 检查
调试方法
检查浏览器控制台
// 打开浏览器开发者工具,查看控制台输出
// 登录时会显示详细的错误信息
检查数据库连接
-- 在Supabase SQL编辑器中运行
SELECT NOW() as current_time;
验证管理员账户
-- 检查管理员账户是否存在
SELECT
username,
role,
full_name,
created_at,
CASE
WHEN password_hash IS NOT NULL THEN '密码已设置'
ELSE '密码未设置'
END as password_status
FROM admin_users
WHERE username = 'admin@example.com';
🔒 安全注意事项
-
密码安全
- 默认密码
admin123
仅用于测试 - 生产环境中请立即修改为强密码
- 默认密码
-
RLS 策略
- 当前策略允许所有操作(用于开发)
- 生产环境需要实施严格的行级安全策略
-
API 密钥
- 不要将 Supabase API 密钥提交到公共代码仓库
- 使用环境变量管理敏感信息
📝 下一步计划
- 测试完整登录流程
- 验证订单管理功能
- 检查用户权限控制
- 优化错误处理和用户体验
- 准备生产环境部署
🎉 完成确认
当您完成以上步骤后,您的系统将具备:
- ✅ 真正的Supabase数据库认证
- ✅ 安全的密码加密存储
- ✅ 完整的管理员账户系统
- ✅ 订单管理数据库集成
- ✅ 用户权限控制机制
如果遇到任何问题,请查看浏览器控制台的错误信息,或检查Supabase Dashboard中的日志。