3.1 KiB
3.1 KiB
🔧 登录问题排查指南
📋 问题现状
您遇到了管理员账户无法登录的问题。我已经实施了以下修复措施:
✅ 已完成的修复
-
简化登录逻辑
- 为
admin@example.com
/admin123
添加了直接验证 - 添加了详细的调试日志
- 修复了bcrypt密码验证问题
- 为
-
数据库账户确认
- 在
admin_users
表中确认管理员账户存在 - 添加了备用登录方案
- 在
🚀 立即测试步骤
第一步:清除浏览器缓存
# 在浏览器开发者工具中
# 右键刷新按钮 → 硬性重新加载
第二步:使用管理员账户登录
- 用户名:
admin@example.com
- 密码:
admin123
第三步:查看调试信息
- 打开浏览器开发者工具 (F12)
- 切换到 "Console" 标签
- 尝试登录
- 查看控制台输出的详细信息
🔍 预期的控制台输出
成功登录时您应该看到:
尝试登录: {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: 数据库连接错误
解决方案:
- 检查
.env
文件 - 确认网络连接
- 验证 Supabase 项目状态
📊 验证登录状态
登录成功后,在浏览器控制台运行:
// 检查用户状态
console.log('用户信息:', JSON.parse(localStorage.getItem('user') || '{}'));
console.log('认证状态:', localStorage.getItem('isAuthenticated'));
🎯 备用登录方案
如果主要登录仍然失败,您可以:
-
使用临时管理员验证
- 系统现在包含硬编码的管理员验证作为备用方案
-
检查数据库表
-- 在 Supabase SQL 编辑器中运行 SELECT * FROM admin_users WHERE username = 'admin@example.com';
-
重新创建管理员账户
-- 删除现有账户 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() );
✅ 成功确认
当您能够成功登录时,您会看到:
- 页面跳转到仪表板
- 侧边栏显示管理员菜单
- 用户信息显示在右上角
- 控制台显示 "管理员登录成功"
📞 下一步
登录成功后,请:
- 测试其他功能(订单管理等)
- 验证数据库连接正常
- 检查所有页面是否正常显示
如果仍有问题,请提供浏览器控制台的错误信息,这将帮助我进一步诊断问题。