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

4.8 KiB
Raw Permalink Blame History

🔐 认证系统设置指南

📋 当前状态总结

您的登录系统现在已经完全接入Supabase数据库,不再使用硬编码验证。

已完成的修改

  1. 登录页面更新 (pages/login.vue)

    • 移除了硬编码的测试账户验证
    • 集成了真正的Supabase认证逻辑
    • 使用 useAuth() 组合式函数进行认证
  2. 环境配置修复 (.env)

    • 删除了重复的 SUPABASE_ANON_KEY 配置
    • 确保配置文件格式正确
  3. 管理员账户脚本 (database/create-admin.sql)

    • 创建了完整的管理员账户初始化脚本
    • 包含密码加密和数据库表结构

🚀 部署步骤

第一步:初始化数据库

  1. 登录您的 Supabase Dashboard
  2. 选择项目:riwtulmitqioswmgwftg (Twilio项目)
  3. 打开 SQL编辑器
  4. 复制并运行以下脚本:

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

第四步:测试登录

  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 表中的 roleadmin
    • 检查 RLS 策略是否正确设置
  3. 无法连接数据库

    • 检查 .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';

🔒 安全注意事项

  1. 密码安全

    • 默认密码 admin123 仅用于测试
    • 生产环境中请立即修改为强密码
  2. RLS 策略

    • 当前策略允许所有操作(用于开发)
    • 生产环境需要实施严格的行级安全策略
  3. API 密钥

    • 不要将 Supabase API 密钥提交到公共代码仓库
    • 使用环境变量管理敏感信息

📝 下一步计划

  1. 测试完整登录流程
  2. 验证订单管理功能
  3. 检查用户权限控制
  4. 优化错误处理和用户体验
  5. 准备生产环境部署

🎉 完成确认

当您完成以上步骤后,您的系统将具备:

  • 真正的Supabase数据库认证
  • 安全的密码加密存储
  • 完整的管理员账户系统
  • 订单管理数据库集成
  • 用户权限控制机制

如果遇到任何问题请查看浏览器控制台的错误信息或检查Supabase Dashboard中的日志。