interpreter-admin/AUTHENTICATION_SETUP.md

187 lines
4.8 KiB
Markdown
Raw Permalink Normal View History

2025-06-26 11:24:11 +08:00
# 🔐 认证系统设置指南
## 📋 当前状态总结
您的登录系统现在已经**完全接入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中的日志。