XNSim/XNSimHtml/README.md

3.8 KiB
Raw Blame History

XNSim 登录系统

这是一个与 C++动态库集成的登录系统,用于 XNSim 项目。

功能特点

  • 美观的响应式登录界面
  • 根据操作系统自动选择动态库类型和命名规则:
    • Windows: login.dll
    • Linux: liblogin.so(符合 Linux 动态库命名规范)
  • 支持基于权限级别的用户角色系统
  • 使用 Node.js 作为后端服务
  • 接口配置管理功能:
    • 支持添加、编辑、删除接口
    • 支持从 Excel 文件导入接口配置
    • 支持按构型、ATA 章节、结构体名等条件筛选
    • 支持分页显示和批量操作

环境要求

  • Node.js 14.x 或更高版本
  • 环境变量 XNCore 指向动态库所在的根目录(系统会在该目录的 lib 子目录中查找动态库)
  • MySQL 数据库(用于存储接口配置数据)

安装步骤

  1. 确保已设置环境变量 XNCore,指向包含动态库的根目录
# Linux/Mac
export XNCore=/path/to/xncore/directory

# Windows (CMD)
set XNCore=C:\path\to\xncore\directory

# Windows (PowerShell)
$env:XNCore = "C:\path\to\xncore\directory"
  1. 确保在 $XNCore/lib 目录下存在相应的动态库文件:

    • Windows: login.dll
    • Linux: liblogin.so
  2. 安装依赖

npm install
  1. 配置数据库连接

在项目根目录创建 .env 文件,添加以下配置:

DB_HOST=localhost
DB_USER=your_username
DB_PASSWORD=your_password
DB_NAME=xnsim_db
  1. 启动服务器
npm start
  1. 访问 http://localhost:3000 打开登录页面

登录 API

登录系统通过调用 /api/login 接口与 C++动态库交互。API 接收以下参数:

  • username: 用户名
  • password: 密码
  • remember: 是否记住用户(布尔值)

API 响应包含以下信息:

  • success: 登录是否成功(布尔值)
  • message: 登录结果消息
  • permissionLevel: 用户权限级别(整数,仅在登录成功时返回)
  • role: 用户角色描述(字符串,仅在登录成功时返回)

接口配置 API

接口列表

  • 路径: /api/interface/list
  • 方法: GET
  • 响应: 返回所有接口配置数据

添加接口

  • 路径: /api/interface/add
  • 方法: POST
  • 请求体: 包含接口配置信息的 JSON 对象

更新接口

  • 路径: /api/interface/update
  • 方法: PUT
  • 请求体: 包含当前数据和原始数据的 JSON 对象

删除接口

  • 路径: /api/interface/delete
  • 方法: DELETE
  • 参数: 通过查询字符串传递接口标识信息

导入接口

  • 路径: /api/interface/import
  • 方法: POST
  • 请求体: 包含导入数据的 JSON 对象

获取导入模板

  • 路径: /api/interface/template
  • 方法: GET
  • 响应: 返回 Excel 模板文件

权限级别

系统支持以下权限级别:

  • 0: 访客
  • 1: 普通用户
  • 2: 高级用户
  • 3: 管理员
  • 4: 超级管理员

技术栈

  • 前端: HTML, CSS, JavaScript, Web Components
  • 后端: Node.js, Express
  • 数据库: MySQL
  • 外部库:
    • ffi-napi (用于调用 C++动态库)
    • xlsx (用于处理 Excel 文件)

注意事项

  • 确保动态库是由 C++编写的,并且包含Login_validateUser导出函数(对应 Login 类的 validateUser 静态方法)
  • Login_validateUser函数接受两个字符串参数(用户名和密码),并返回整数表示权限级别(负值表示登录失败)
  • 系统会根据操作系统类型在$XNCore/lib目录下查找相应类型的动态库,并遵循各操作系统的命名规范
  • 接口配置数据需要遵循以下规则:
    • 接口名称必须符合 C++ 命名规范
    • 数组大小必须大于 1第二维可以为 0
    • 必填字段包括构型、ATA 章节、接口结构体名、接口名称、数据类型

更新计划

  1. 添加接口配置从 IDL 文件导入的功能