Files
012-kaopeilian/知识库/开发记录/登录问题解决报告.md
111 998211c483 feat: 初始化考培练系统项目
- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
2026-01-24 19:33:28 +08:00

5.1 KiB
Raw Blame History

登录问题解决报告

问题描述

用户无法登录考培练系统KPL开发环境

问题排查过程

1. 初步检查

  • 容器状态:所有容器正常运行
  • 前端访问:https://kpl.ireborn.com.cn 可以访问
  • 登录功能:提示"用户名或密码错误"

2. 发现的问题

问题1数据库字段缺失

错误信息:

(pymysql.err.OperationalError) (1054, "Unknown column 'teams.is_deleted' in 'field list'")

解决方案:

ALTER TABLE teams ADD COLUMN is_deleted TINYINT(1) DEFAULT 0 COMMENT '是否已删除';
ALTER TABLE teams ADD COLUMN deleted_at DATETIME NULL COMMENT '删除时间';

问题2system_logs表不存在

错误信息:

(pymysql.err.ProgrammingError) (1146, "Table 'kaopeilian.system_logs' doesn't exist")

解决方案:

CREATE TABLE IF NOT EXISTS system_logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    level VARCHAR(20) COMMENT '日志级别',
    type VARCHAR(50) COMMENT '日志类型',
    user VARCHAR(100) COMMENT '用户',
    user_id INT COMMENT '用户ID',
    ip VARCHAR(100) COMMENT 'IP地址',
    message TEXT COMMENT '日志消息',
    user_agent VARCHAR(500) COMMENT '用户代理',
    path VARCHAR(500) COMMENT '请求路径',
    method VARCHAR(20) COMMENT '请求方法',
    extra_data JSON COMMENT '额外数据',
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    INDEX idx_level (level),
    INDEX idx_type (type),
    INDEX idx_user_id (user_id),
    INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统日志表';

问题3密码不正确

原因分析:

  • 文档中记录的密码是 password123,但实际不正确
  • KPL开发系统和演示系统的密码hash不同
  • 通过测试演示系统,发现正确密码是 admin123

解决方案:

UPDATE users SET password_hash = '$2b$12$jFhkYU3.Cd1kAfr64/073eayPquAr0z9WWUQEdOyFRmAqcxz.i10C' 
WHERE username IN ('admin', 'superadmin', 'testuser');

最终解决方案

正确的登录信息

所有系统统一密码:admin123

系统 域名 用户名 密码
开发系统 https://kpl.ireborn.com.cn admin admin123
开发系统 https://kpl.ireborn.com.cn superadmin admin123
开发系统 https://kpl.ireborn.com.cn testuser admin123
演示系统 https://aiedu.ireborn.com.cn admin admin123
演示系统 https://aiedu.ireborn.com.cn superadmin admin123
演示系统 https://aiedu.ireborn.com.cn 其他用户 admin123

API端点信息

正确的登录API路径:

  • /api/v1/auth/login
  • /api/auth/login (此路径不存在)

登录请求示例:

curl -X POST https://kpl.ireborn.com.cn/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"admin123"}'

成功响应示例:

{
  "code": 200,
  "message": "登录成功",
  "data": {
    "user": {
      "username": "admin",
      "email": "admin@kaopeilian.com",
      "full_name": "系统管理员",
      "role": "admin",
      ...
    },
    "token": {
      "access_token": "eyJhbGc...",
      "refresh_token": "eyJhbGc...",
      "token_type": "bearer"
    }
  }
}

根本原因分析

  1. 数据库结构不完整: KPL开发系统使用的初始化SQL脚本可能不是最新版本缺少部分表和字段
  2. 密码文档错误: 文档中记录的密码与实际数据库中的密码hash不匹配
  3. 两套系统不一致: 开发系统和演示系统的数据初始化脚本不同

预防措施

1. 数据库初始化规范

  • 使用统一的数据库初始化脚本
  • 定期同步开发环境和演示环境的数据库结构
  • 在脚本中包含所有必需的表和字段

2. 密码管理规范

  • 在代码仓库中明确记录默认密码
  • 提供密码重置工具脚本
  • 首次登录强制修改密码

3. 文档管理规范

  • 保持文档与实际系统一致
  • 每次修改密码后更新文档
  • 测试文档中的所有账号密码

已更新的文档

  • /root/aiedu/系统登录账号密码.md - 已更新为正确密码
  • /root/aiedu/登录问题解决报告.md - 本报告

测试验证

开发系统测试

# 测试admin登录
curl -X POST https://kpl.ireborn.com.cn/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"admin123"}'

# 结果:✅ 登录成功

演示系统测试

# 测试admin登录
curl -X POST https://aiedu.ireborn.com.cn/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"admin123"}'

# 结果:✅ 登录成功

总结

所有登录问题已完全解决:

  1. 数据库结构完整
  2. 密码统一为 admin123
  3. 文档已更新
  4. 两套系统登录正常

解决时间: 2025-11-02
解决状态: 已完成