XNSim/XNSimHtml/README.md

155 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# XNSim 登录系统
这是一个与 C++动态库集成的登录系统,用于 XNSim 项目。
## 功能特点
- 美观的响应式登录界面
- 根据操作系统自动选择动态库类型和命名规则:
- Windows: `login.dll`
- Linux: `liblogin.so`(符合 Linux 动态库命名规范)
- 支持基于权限级别的用户角色系统
- 使用 Node.js 作为后端服务
- 接口配置管理功能:
- 支持添加、编辑、删除接口
- 支持从 Excel 文件导入接口配置
- 支持按构型、ATA 章节、结构体名等条件筛选
- 支持分页显示和批量操作
## 环境要求
- Node.js 14.x 或更高版本
- 环境变量 `XNCore` 指向动态库所在的根目录(系统会在该目录的 lib 子目录中查找动态库)
- MySQL 数据库(用于存储接口配置数据)
## 安装步骤
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
```
4. 配置数据库连接
在项目根目录创建 `.env` 文件,添加以下配置:
```env
DB_HOST=localhost
DB_USER=your_username
DB_PASSWORD=your_password
DB_NAME=xnsim_db
```
5. 启动服务器
```bash
npm start
```
6. 访问 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 文件导入的功能