管理后台 API (Admin)
admin_bp 蓝图是系统的“核心司令部”。它通过硬编码与环境变量结合的方式定义超级管理员权限,允许执行敏感的数据清理与跨用户审计操作。
🛡️ 权限模型 (ACL)
Section titled “🛡️ 权限模型 (ACL)”系统采用 RBAC (基于角色的访问控制) 模型。权限校验通过自定义装饰器 @admin_required 实现,具备以下逻辑特点:
- 环境变量驱动:管理员名单通过
ADMIN_USERNAMES配置,增强了部署灵活性。 - 硬性级联保护:禁止删除名单内的管理员账号,防止系统孤立。
- 身份溯源:解析 JWT 中的
identity并在数据库中检索 User 对象以确保权限的实时有效性。
📡 用户管理接口
Section titled “📡 用户管理接口”获取用户列表
Section titled “获取用户列表”拉取系统内所有注册用户的基本档案。
- URL:
/users - Method:
GET - Auth:
@admin_required
响应示例 (200 OK)
Section titled “响应示例 (200 OK)”[ { "id": 1, "username": "Yanghe", "email": "admin@coal.edu", "real_name": "首席", "school": "大学" }]安全删除用户
Section titled “安全删除用户”移除指定用户及其名下的所有计算记录与结果。
- URL:
/users/<int:user_id> - Method:
DELETE
核心逻辑说明
Section titled “核心逻辑说明”- 级联效应:依赖于数据库
cascade="all, delete-orphan"配置,一键清理CalcRecord与CalcResult。 - 自保校验:禁止删除具有管理权限的账号(返回 400)。
📑 仿真记录监控
Section titled “📑 仿真记录监控”该模块允许管理员监控全系统的计算资源消耗情况。
1. 获取全局快照 (GET /records)
Section titled “1. 获取全局快照 (GET /records)”通过 SQLAlchemy 多表 Join 操作,实时聚合用户信息与计算参数。
- 排序策略:按
timestamp倒序排列,最新计算优先展示。 - 数据回填:自动将 JSON 存储的
input_params与CalcResult对象合并返回。
2. 异常记录清理 (DELETE /records/<id>)
Section titled “2. 异常记录清理 (DELETE /records/<id>)”用于移除因输入异常、算法发散或测试产生的不必要数据。
💻 关键装饰器实现分析
Section titled “💻 关键装饰器实现分析”def admin_required(fn): """ @description 高阶函数拦截器 1. 验证 JWT 令牌合法性 2. 校验 User 模型中的 username 是否处于管理名单 """ @jwt_required() def wrapper(*args, **kwargs): identity = get_jwt_identity() user = db.session.get(User, int(identity))
if not user or not is_admin_user(user): return jsonify({"msg": "拒绝访问:权限不足"}), 403 return fn(*args, **kwargs) return wrapper