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