2025-04-28 12:25:20 +08:00
|
|
|
|
# XNSim 登录系统
|
|
|
|
|
|
|
|
|
|
这是一个与 C++动态库集成的登录系统,用于 XNSim 项目。
|
|
|
|
|
|
|
|
|
|
## 功能特点
|
|
|
|
|
|
|
|
|
|
- 美观的响应式登录界面
|
|
|
|
|
- 根据操作系统自动选择动态库类型和命名规则:
|
|
|
|
|
- Windows: `login.dll`
|
|
|
|
|
- Linux: `liblogin.so`(符合 Linux 动态库命名规范)
|
|
|
|
|
- 支持基于权限级别的用户角色系统
|
|
|
|
|
- 使用 Node.js 作为后端服务
|
2025-05-07 13:46:48 +08:00
|
|
|
|
- 接口配置管理功能:
|
|
|
|
|
- 支持添加、编辑、删除接口
|
|
|
|
|
- 支持从 Excel 文件导入接口配置
|
|
|
|
|
- 支持按构型、ATA 章节、结构体名等条件筛选
|
|
|
|
|
- 支持分页显示和批量操作
|
2025-04-28 12:25:20 +08:00
|
|
|
|
|
|
|
|
|
## 环境要求
|
|
|
|
|
|
|
|
|
|
- Node.js 14.x 或更高版本
|
|
|
|
|
- 环境变量 `XNCore` 指向动态库所在的根目录(系统会在该目录的 lib 子目录中查找动态库)
|
2025-05-07 13:46:48 +08:00
|
|
|
|
- MySQL 数据库(用于存储接口配置数据)
|
2025-04-28 12:25:20 +08:00
|
|
|
|
|
|
|
|
|
## 安装步骤
|
|
|
|
|
|
|
|
|
|
1. 确保已设置环境变量 `XNCore`,指向包含动态库的根目录
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 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"
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. 确保在 `$XNCore/lib` 目录下存在相应的动态库文件:
|
|
|
|
|
|
|
|
|
|
- Windows: `login.dll`
|
|
|
|
|
- Linux: `liblogin.so`
|
|
|
|
|
|
|
|
|
|
3. 安装依赖
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
npm install
|
|
|
|
|
```
|
|
|
|
|
|
2025-05-07 13:46:48 +08:00
|
|
|
|
4. 配置数据库连接
|
|
|
|
|
|
|
|
|
|
在项目根目录创建 `.env` 文件,添加以下配置:
|
|
|
|
|
|
|
|
|
|
```env
|
|
|
|
|
DB_HOST=localhost
|
|
|
|
|
DB_USER=your_username
|
|
|
|
|
DB_PASSWORD=your_password
|
|
|
|
|
DB_NAME=xnsim_db
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
5. 启动服务器
|
2025-04-28 12:25:20 +08:00
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
npm start
|
|
|
|
|
```
|
|
|
|
|
|
2025-05-07 13:46:48 +08:00
|
|
|
|
6. 访问 http://localhost:3000 打开登录页面
|
2025-04-28 12:25:20 +08:00
|
|
|
|
|
|
|
|
|
## 登录 API
|
|
|
|
|
|
|
|
|
|
登录系统通过调用 `/api/login` 接口与 C++动态库交互。API 接收以下参数:
|
|
|
|
|
|
|
|
|
|
- `username`: 用户名
|
|
|
|
|
- `password`: 密码
|
|
|
|
|
- `remember`: 是否记住用户(布尔值)
|
|
|
|
|
|
|
|
|
|
API 响应包含以下信息:
|
|
|
|
|
|
|
|
|
|
- `success`: 登录是否成功(布尔值)
|
|
|
|
|
- `message`: 登录结果消息
|
|
|
|
|
- `permissionLevel`: 用户权限级别(整数,仅在登录成功时返回)
|
|
|
|
|
- `role`: 用户角色描述(字符串,仅在登录成功时返回)
|
|
|
|
|
|
2025-05-07 13:46:48 +08:00
|
|
|
|
## 接口配置 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 模板文件
|
|
|
|
|
|
2025-04-28 12:25:20 +08:00
|
|
|
|
## 权限级别
|
|
|
|
|
|
|
|
|
|
系统支持以下权限级别:
|
|
|
|
|
|
|
|
|
|
- 0: 访客
|
|
|
|
|
- 1: 普通用户
|
|
|
|
|
- 2: 高级用户
|
|
|
|
|
- 3: 管理员
|
|
|
|
|
- 4: 超级管理员
|
|
|
|
|
|
|
|
|
|
## 技术栈
|
|
|
|
|
|
2025-05-07 13:46:48 +08:00
|
|
|
|
- 前端: HTML, CSS, JavaScript, Web Components
|
2025-04-28 12:25:20 +08:00
|
|
|
|
- 后端: Node.js, Express
|
2025-05-07 13:46:48 +08:00
|
|
|
|
- 数据库: MySQL
|
|
|
|
|
- 外部库:
|
|
|
|
|
- ffi-napi (用于调用 C++动态库)
|
|
|
|
|
- xlsx (用于处理 Excel 文件)
|
2025-04-28 12:25:20 +08:00
|
|
|
|
|
|
|
|
|
## 注意事项
|
|
|
|
|
|
|
|
|
|
- 确保动态库是由 C++编写的,并且包含`Login_validateUser`导出函数(对应 Login 类的 validateUser 静态方法)
|
|
|
|
|
- `Login_validateUser`函数接受两个字符串参数(用户名和密码),并返回整数表示权限级别(负值表示登录失败)
|
|
|
|
|
- 系统会根据操作系统类型在`$XNCore/lib`目录下查找相应类型的动态库,并遵循各操作系统的命名规范
|
2025-05-07 13:46:48 +08:00
|
|
|
|
- 接口配置数据需要遵循以下规则:
|
|
|
|
|
- 接口名称必须符合 C++ 命名规范
|
|
|
|
|
- 数组大小必须大于 1(第二维可以为 0)
|
|
|
|
|
- 必填字段包括:构型、ATA 章节、接口结构体名、接口名称、数据类型
|
|
|
|
|
|
|
|
|
|
## 更新计划
|
|
|
|
|
|
|
|
|
|
1. 添加接口配置从 IDL 文件导入的功能
|