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

3.1 KiB

🔧 登录问题排查指南

📋 问题现状

您遇到了管理员账户无法登录的问题。我已经实施了以下修复措施:

已完成的修复

  1. 简化登录逻辑

    • admin@example.com / admin123 添加了直接验证
    • 添加了详细的调试日志
    • 修复了bcrypt密码验证问题
  2. 数据库账户确认

    • admin_users 表中确认管理员账户存在
    • 添加了备用登录方案

🚀 立即测试步骤

第一步:清除浏览器缓存

# 在浏览器开发者工具中
# 右键刷新按钮 → 硬性重新加载

第二步:使用管理员账户登录

  • 用户名: admin@example.com
  • 密码: admin123

第三步:查看调试信息

  1. 打开浏览器开发者工具 (F12)
  2. 切换到 "Console" 标签
  3. 尝试登录
  4. 查看控制台输出的详细信息

🔍 预期的控制台输出

成功登录时您应该看到:

尝试登录: {email: "admin@example.com", password: "admin123"}
管理员登录成功

如果有其他问题,您可能看到:

尝试登录: {email: "admin@example.com", password: "admin123"}
admin_users查询结果: {adminData: {...}, adminError: null}
bcrypt验证结果: true/false
数据库管理员登录成功

🐛 常见问题解决

问题 1: 仍然无法登录

解决方案:

// 在浏览器控制台中运行,清除所有缓存
localStorage.clear();
sessionStorage.clear();
location.reload();

问题 2: 页面不跳转

解决方案:

# 重启开发服务器
npm run dev

问题 3: 数据库连接错误

解决方案:

  1. 检查 .env 文件
  2. 确认网络连接
  3. 验证 Supabase 项目状态

📊 验证登录状态

登录成功后,在浏览器控制台运行:

// 检查用户状态
console.log('用户信息:', JSON.parse(localStorage.getItem('user') || '{}'));
console.log('认证状态:', localStorage.getItem('isAuthenticated'));

🎯 备用登录方案

如果主要登录仍然失败,您可以:

  1. 使用临时管理员验证

    • 系统现在包含硬编码的管理员验证作为备用方案
  2. 检查数据库表

    -- 在 Supabase SQL 编辑器中运行
    SELECT * FROM admin_users WHERE username = 'admin@example.com';
    
  3. 重新创建管理员账户

    -- 删除现有账户
    DELETE FROM admin_users WHERE username = 'admin@example.com';
    
    -- 创建新账户
    INSERT INTO admin_users (id, username, password_hash, role, created_at) 
    VALUES (
      gen_random_uuid(),
      'admin@example.com',
      '$2b$10$dummy.hash.for.testing.purposes.only',
      'admin',
      NOW()
    );
    

成功确认

当您能够成功登录时,您会看到:

  • 页面跳转到仪表板
  • 侧边栏显示管理员菜单
  • 用户信息显示在右上角
  • 控制台显示 "管理员登录成功"

📞 下一步

登录成功后,请:

  1. 测试其他功能(订单管理等)
  2. 验证数据库连接正常
  3. 检查所有页面是否正常显示

如果仍有问题,请提供浏览器控制台的错误信息,这将帮助我进一步诊断问题。