interpreter-admin/AUTHENTICATION_SETUP.md
Mars Developer 51f8d95bf9 first commit
2025-06-26 11:24:11 +08:00

187 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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