系统概述
浙通信息用户管理中台是一套面向企业的统一身份认证与用户管理系统,提供用户全生命周期管理、角色权限控制、安全策略配置、LDAP/RADIUS 集成及全面的日志审计能力。
| 组件 | 技术 / 配置 |
| 后端框架 | Flask(Python 3.12.11) |
| 前端应用 | 单文件 HTML 应用 |
| 数据库 | SQLite |
| Web 服务器 | Nginx 1.26.3 |
| LDAP 服务 | 端口 1389,Base DN: dc=ztinfo,dc=com |
| 密码策略 | 最少 8 位,必须包含数字 |
| 认证方式 | Session Cookie + API Token |
| API 路由总数 | 89 个 |
统一响应格式
所有 API 接口返回统一的 JSON 格式:
{
"code": 200,
"message": "操作成功",
"data": {
// 业务数据
}
}
字段说明:
code 为 HTTP 状态码;message 为提示信息;data 为业务数据,失败时可能为 null。
认证说明
系统支持两种认证方式:Session Cookie 认证(Web 前端)和 API Token 认证(第三方集成 / RESTful API v1)。
方式一:Session Cookie 认证
适用于浏览器端 Web 应用。用户通过 POST /api/login 登录后,服务器创建 Session 并通过 Set-Cookie 下发。后续请求浏览器自动携带 Cookie,无需额外配置。
- 登录接口:
POST /api/login
- 登出接口:
POST /api/logout
- Cookie 名称:
session
- 适用范围:
/api/*(不含 /api/v1/*)
方式二:API Token 认证
适用于第三方系统对接和 RESTful API v1 接口。通过管理后台创建 API Token,在请求头中携带 Token 进行认证。
- Token 管理:
/api/tokens
- 请求头格式:
Authorization: Bearer <token>
- 适用范围:
/api/v1/* 全部接口
- Token 可设置权限范围和过期时间
curl -X GET https://your-domain/api/v1/users \
-H "Authorization: Bearer your_api_token_here"
通用请求头
| 请求头 | 说明 | 必填 |
Content-Type | application/json | 是(POST/PUT) |
Cookie | Session Cookie,浏览器自动携带 | Session 认证时 |
Authorization | Bearer <token>,API Token 认证 | Token 认证时 |
密码策略
系统密码策略可通过 /api/security/password-policy 接口进行配置,支持多维度密码复杂度要求和安全锁定机制。
| 策略项 | 字段 | 默认值 / 说明 |
| 最小密码长度 | min_length | 8(最少 8 位) |
| 必须包含数字 | require_digit | true(强制要求) |
| 必须包含大写字母 | require_uppercase | 可配置 |
| 必须包含小写字母 | require_lowercase | 可配置 |
| 必须包含特殊字符 | require_special | 可配置 |
| 密码重置周期(天) | reset_cycle_days | 定期强制修改密码 |
| 弱密码检测 | prevent_weak_passwords | 阻止使用常见弱密码 |
| 最大登录失败次数 | max_login_attempts | 超过后锁定账户 |
| 账户锁定时长(分钟) | lockout_duration | 锁定后自动解锁时间 |
注意:密码必须至少 8 位且包含数字,这是系统的强制最低要求。其他策略项可根据安全需求灵活配置。
错误码说明
API 接口使用标准 HTTP 状态码,响应体中的 code 字段与 HTTP 状态码一致。
| 状态码 | 名称 | 说明 |
200 | OK | 请求成功 |
201 | Created | 资源创建成功 |
400 | Bad Request | 请求参数错误或格式不正确 |
401 | Unauthorized | 未认证、未登录或 Session / Token 已过期 |
403 | Forbidden | 已认证但无权限访问该资源 |
404 | Not Found | 请求的资源不存在 |
409 | Conflict | 资源冲突(如用户名已存在) |
422 | Unprocessable Entity | 请求格式正确但语义有误(如密码不符合策略) |
429 | Too Many Requests | 请求频率过高,已被限流 |
500 | Internal Server Error | 服务器内部错误 |
502 | Bad Gateway | 网关错误(Nginx 上游异常) |
503 | Service Unavailable | 服务不可用(如 LDAP / RADIUS 服务未启动) |
LDAP 服务端
系统内置 LDAP 服务端,可为外部应用提供统一的 LDAP 身份认证服务。支持 SM3 密码哈希算法,可与用户管理中台数据同步。
服务配置
| 配置项 | 值 |
| 监听端口 | 1389 |
| Base DN | dc=ztinfo,dc=com |
| 用户 DN 模式 | uid={username},dc=ztinfo,dc=com |
| 密码哈希算法 | SM3 |
| userPassword 属性格式 | {SM3}hash:salt |
userPassword 属性格式说明:LDAP 服务端存储的密码采用 {SM3}hash:salt 格式。其中 {SM3} 为算法标识,hash 为 SM3 哈希值(十六进制),salt 为随机盐值。示例:{SM3}a1b2c3d4e5f6:d8e9f0a1b2c3
LDAP 服务端管理接口
LDAP 服务端的配置查询、更新、状态监控及启停控制可通过以下接口管理:
GET /api/security/ldap-server/config — 获取服务端配置
PUT /api/security/ldap-server/config — 更新服务端配置
GET /api/security/ldap-server/status — 获取运行状态
POST /api/security/ldap-server/control — 启动 / 停止服务
LDAP 客户端配置
系统同时支持作为 LDAP 客户端连接外部 LDAP 服务器,可通过 /api/security/ldap 系列接口配置外部 LDAP 连接参数并同步用户。
# 外部应用通过 LDAP 认证示例
ldapsearch -H ldap://your-domain:1389 \
-D "uid=testuser,dc=ztinfo,dc=com" \
-W \
-b "dc=ztinfo,dc=com" \
"(uid=testuser)"
数据库表结构
系统使用 SQLite 数据库,共包含 22 张数据表,涵盖用户、部门、角色、权限、安全配置、日志及系统设置等。
| 字段 | 说明 |
| id | 用户 ID(主键) |
| username | 用户名(唯一) |
| password_hash | 密码哈希值 |
| salt | 密码盐值 |
| nickname | 昵称 |
| real_name | 真实姓名 |
| phone | 手机号 |
| email | 邮箱 |
| id_card | 身份证号 |
| position | 职位 |
| status | 用户状态(active / disabled / pending / locked) |
| effective_time | 生效时间 |
| expiry_time | 过期时间 |
| failed_login_count | 登录失败次数 |
| locked_until | 锁定截止时间 |
| last_login_at | 最后登录时间 |
| last_login_ip | 最后登录 IP |
| must_change_password | 是否需要修改密码 |
| password_changed_at | 密码最后修改时间 |
| 字段 | 说明 |
| id | 部门 ID(主键) |
| name | 部门名称 |
| parent_id | 上级部门 ID(支持树形结构) |
| sort_order | 排序序号 |
| status | 部门状态 |
| 字段 | 说明 |
| id | 角色 ID(主键) |
| name | 角色名称 |
| code | 角色编码(唯一) |
| description | 角色描述 |
| status | 角色状态 |
| sort_order | 排序序号 |
| 字段 | 说明 |
| id | 权限 ID(主键) |
| name | 权限名称 |
| code | 权限编码 |
| type | 权限类型(menu / button / api) |
| parent_id | 上级权限 ID(树形结构) |
| sort_order | 排序序号 |
| path | 前端路由路径 |
| icon | 菜单图标 |
| 字段 | 说明 |
| user_id | 用户 ID |
| role_id | 角色 ID |
| 字段 | 说明 |
| id | 主键 |
| user_id | 用户 ID |
| department_id | 部门 ID |
| is_primary | 是否主部门 |
| 字段 | 说明 |
| role_id | 角色 ID |
| permission_id | 权限 ID |
| 字段 | 说明 |
| min_length | 最小密码长度 |
| require_uppercase | 是否要求大写字母 |
| require_lowercase | 是否要求小写字母 |
| require_digit | 是否要求数字 |
| require_special | 是否要求特殊字符 |
| reset_cycle_days | 密码重置周期(天) |
| prevent_weak_passwords | 是否启用弱密码检测 |
| max_login_attempts | 最大登录失败次数 |
| lockout_duration | 账户锁定时长(分钟) |
| 字段 | 说明 |
| id | 规则 ID(主键) |
| ip_range | IP 地址范围(如 192.168.1.0/24) |
| rule_type | 规则类型(allow / deny) |
| description | 规则描述 |
| status | 规则状态(enabled / disabled) |
| 字段 | 说明 |
| id | 日志 ID(主键) |
| username | 登录用户名 |
| user_id | 用户 ID |
| login_time | 登录时间 |
| source_ip | 来源 IP |
| user_agent | 用户代理 |
| status | 登录状态(success / failed) |
| fail_reason | 失败原因 |
| location | 登录地点 |
| 字段 | 说明 |
| id | 日志 ID(主键) |
| user_id | 操作用户 ID |
| username | 操作用户名 |
| operation | 操作类型 |
| module | 操作模块 |
| target_type | 操作目标类型 |
| target_id | 操作目标 ID |
| detail | 操作详情 |
| ip | 操作 IP |
| user_agent | 用户代理 |
| created_at | 创建时间 |
| 字段 | 说明 |
| id | 日志 ID(主键) |
| token_id | Token ID |
| token_name | Token 名称 |
| user_id | 用户 ID |
| username | 用户名 |
| method | 请求方法 |
| endpoint | 请求端点 |
| path | 请求路径 |
| status_code | 响应状态码 |
| response_time_ms | 响应耗时(毫秒) |
| created_at | 创建时间 |
| 字段 | 说明 |
| id | Token ID(主键) |
| token | Token 值 |
| name | Token 名称 |
| user_id | 所属用户 ID |
| permissions | 权限范围 |
| status | Token 状态 |
| expires_at | 过期时间 |
| created_at | 创建时间 |
| last_used_at | 最后使用时间 |
| 字段 | 说明 |
| id | 配置 ID(主键) |
| server | LDAP 服务器地址 |
| port | LDAP 服务器端口 |
| bind_dn | 绑定 DN |
| bind_password | 绑定密码 |
| base_dn | Base DN |
| user_filter | 用户过滤器 |
| sync_filter | 同步过滤器 |
| use_ssl | 是否启用 SSL |
| enabled | 是否启用 LDAP 认证 |
| 字段 | 说明 |
| id | 配置 ID(主键) |
| server | RADIUS 服务器地址 |
| port | RADIUS 服务器端口 |
| shared_secret | 共享密钥 |
| timeout | 超时时间(秒) |
| retries | 重试次数 |
| enabled | 是否启用 RADIUS 认证 |
| 字段 | 说明 |
| id | 配置 ID(主键) |
| server | Syslog 服务器地址 |
| port | Syslog 服务器端口 |
| protocol | 协议(UDP / TCP) |
| facility | 日志设施 |
| enabled | 是否启用 Syslog |
| log_login | 是否记录登录日志 |
| log_operation | 是否记录操作日志 |
| log_level | 日志级别 |
| tag | 日志标签 |
| 字段 | 说明 |
| 记录 LDAP 服务端的认证访问日志,包括认证请求、来源 IP、认证结果等信息。 |
| 字段 | 说明 |
| 记录 RADIUS 服务端的认证访问日志,包括认证请求、来源 IP、认证结果等信息。 |
| 字段 | 说明 |
| 记录 RADIUS 记账信息,包括用户上下线时间、流量统计、会话时长等。 |
| 字段 | 说明 |
| 存储用户登录会话信息,用于会话管理和在线状态跟踪。 |
API 接口
系统共提供 89 个 API 接口,按功能分为 19 个分类。所有接口均以 /api 为前缀。支持在下方搜索框中按关键词过滤接口。
🔍
1 认证管理
提供用户登录、登出、注册、个人信息查询和密码修改功能。
| 方法 | 路径 | 说明 |
| POST | /api/login | 用户登录,返回用户信息和权限 |
| POST | /api/logout | 用户登出,清除 session |
| POST | /api/register | 用户注册 |
| GET | /api/profile | 获取当前用户信息 |
| POST | /api/change-password | 修改自己的密码(需旧密码验证) |
2 仪表盘
提供系统仪表盘统计数据。
| 方法 | 路径 | 说明 |
| GET | /api/dashboard/stats | 获取仪表盘统计数据(用户数、登录统计等) |
3 用户管理
用户全生命周期管理,包括增删改查、状态管理、角色分配、批量操作和审核流程。
| 方法 | 路径 | 说明 |
| GET | /api/users | 获取用户列表(支持分页、搜索、筛选) |
| GET | /api/users/{uid} | 获取用户详情 |
| POST | /api/users | 创建用户 |
| PUT | /api/users/{uid} | 更新用户信息(支持密码修改) |
| DELETE | /api/users/{uid} | 删除用户 |
| PUT | /api/users/{uid}/status | 更新用户状态 |
| POST | /api/users/{uid}/reset-password | 重置用户密码 |
| GET | /api/users/{uid}/roles | 获取用户角色 |
| PUT | /api/users/{uid}/roles | 分配用户角色 |
| PUT | /api/users/batch-status | 批量更新用户状态 |
| POST | /api/users/batch-import | 批量导入用户 |
| GET | /api/users/batch-export | 批量导出用户 |
| GET | /api/users/pending | 获取待审核用户 |
| PUT | /api/users/{uid}/approve | 审核通过用户 |
| PUT | /api/users/{uid}/reject | 拒绝用户 |
4 部门管理
组织架构管理,支持树形层级结构的部门增删改查。
| 方法 | 路径 | 说明 |
| GET | /api/departments | 获取部门列表(树形结构) |
| POST | /api/departments | 创建部门 |
| PUT | /api/departments/{did} | 更新部门 |
| DELETE | /api/departments/{did} | 删除部门 |
5 角色管理
角色资源的增删改查,角色是权限分配的载体。
| 方法 | 路径 | 说明 |
| GET | /api/roles | 获取角色列表 |
| POST | /api/roles | 创建角色 |
| PUT | /api/roles/{rid} | 更新角色 |
| DELETE | /api/roles/{rid} | 删除角色 |
6 角色权限
管理角色与权限的关联关系,实现基于角色的访问控制(RBAC)。
| 方法 | 路径 | 说明 |
| GET | /api/roles/{rid}/permissions | 获取角色权限 |
| PUT | /api/roles/{rid}/permissions | 分配角色权限 |
7 权限管理
权限资源管理,支持菜单、按钮、API 等多种权限类型。
| 方法 | 路径 | 说明 |
| GET | /api/permissions | 获取权限列表 |
| POST | /api/permissions | 创建权限 |
| PUT | /api/permissions/{pid} | 更新权限 |
| DELETE | /api/permissions/{pid} | 删除权限 |
8 安全设置 — 密码策略
查询和更新系统密码复杂度策略。
| 方法 | 路径 | 说明 |
| GET | /api/security/password-policy | 获取密码策略 |
| PUT | /api/security/password-policy | 更新密码策略 |
9 安全设置 — IP 规则
IP 黑白名单管理,控制访问来源。
| 方法 | 路径 | 说明 |
| GET | /api/security/ip-rules | 获取 IP 规则列表 |
| POST | /api/security/ip-rules | 创建 IP 规则 |
| PUT | /api/security/ip-rules/{rid} | 更新 IP 规则 |
| DELETE | /api/security/ip-rules/{rid} | 删除 IP 规则 |
10 安全设置 — 会话管理
查看和管理在线用户会话,支持强制终止会话。
| 方法 | 路径 | 说明 |
| GET | /api/security/sessions | 获取在线会话 |
| DELETE | /api/security/sessions/{uid} | 终止用户会话 |
11 安全设置 — Syslog
Syslog 日志服务器配置和连接测试。
| 方法 | 路径 | 说明 |
| GET | /api/security/syslog | 获取 Syslog 配置 |
| PUT | /api/security/syslog | 更新 Syslog 配置 |
| POST | /api/security/syslog/test | 测试 Syslog 连接 |
12 安全设置 — LDAP 配置
外部 LDAP 服务器连接配置、测试和用户同步。
| 方法 | 路径 | 说明 |
| GET | /api/security/ldap | 获取 LDAP 配置 |
| PUT | /api/security/ldap | 更新 LDAP 配置 |
| POST | /api/security/ldap/test | 测试 LDAP 连接 |
| POST | /api/security/ldap/sync | 同步 LDAP 用户 |
13 安全设置 — LDAP 服务端
内置 LDAP 服务端配置和运行管理,为外部应用提供 LDAP 认证服务。
| 方法 | 路径 | 说明 |
| GET | /api/security/ldap-server/config | 获取 LDAP 服务端配置 |
| PUT | /api/security/ldap-server/config | 更新 LDAP 服务端配置 |
| GET | /api/security/ldap-server/status | 获取 LDAP 服务端状态 |
| POST | /api/security/ldap-server/control | 启动 / 停止 LDAP 服务端 |
14 安全设置 — RADIUS 配置
外部 RADIUS 服务器连接配置和测试。
| 方法 | 路径 | 说明 |
| GET | /api/security/radius | 获取 RADIUS 配置 |
| PUT | /api/security/radius | 更新 RADIUS 配置 |
| POST | /api/security/radius/test | 测试 RADIUS 连接 |
15 安全设置 — RADIUS 服务端
内置 RADIUS 服务端配置和运行管理,为网络设备提供 RADIUS 认证服务。
| 方法 | 路径 | 说明 |
| GET | /api/security/radius-server/config | 获取 RADIUS 服务端配置 |
| PUT | /api/security/radius-server/config | 更新 RADIUS 服务端配置 |
| GET | /api/security/radius-server/status | 获取 RADIUS 服务端状态 |
| POST | /api/security/radius-server/control | 启动 / 停止 RADIUS 服务端 |
16 日志管理
系统各类日志的查询、导出和清理。
| 方法 | 路径 | 说明 |
| GET | /api/logs/login | 获取登录日志 |
| GET | /api/logs/operation | 获取操作日志 |
| GET | /api/logs/api | 获取 API 调用日志 |
| GET | /api/logs/export | 导出日志 |
| GET | /api/logs/ldap | 获取 LDAP 访问日志 |
| DELETE | /api/logs/ldap/clear | 清除 LDAP 日志 |
| GET | /api/logs/radius | 获取 RADIUS 日志 |
17 RADIUS 日志
RADIUS 服务端的在线用户管理、记账记录、调试日志和日志清理。
| 方法 | 路径 | 说明 |
| GET | /api/logs/radius/online | 获取在线用户 |
| POST | /api/logs/radius/online/disconnect | 断开在线用户 |
| GET | /api/logs/radius/accounting | 获取记账记录 |
| GET | /api/logs/radius/accounting/stats | 获取记账统计 |
| GET | /api/logs/radius/debug | 获取调试日志 |
| POST | /api/logs/radius/debug/clear | 清除调试日志 |
| DELETE | /api/logs/radius/clear | 清除 RADIUS 日志 |
18 API Token 管理
API Token 的创建、更新、删除和列表查询,用于第三方系统对接认证。
| 方法 | 路径 | 说明 |
| GET | /api/tokens | 获取 Token 列表 |
| POST | /api/tokens | 创建 Token |
| PUT | /api/tokens/{tid} | 更新 Token |
| DELETE | /api/tokens/{tid} | 删除 Token |
19 RESTful API v1
面向第三方系统的 RESTful API,统一使用 Token 认证(Authorization: Bearer <token>)。
认证方式:此组接口仅支持 API Token 认证,不支持 Session Cookie。需在请求头中携带 Authorization: Bearer <token>。
| 方法 | 路径 | 说明 |
| GET | /api/v1/health | 健康检查 |
| POST | /api/v1/auth/login | Token 认证登录 |
| POST | /api/v1/auth/logout | Token 认证登出 |
| GET | /api/v1/users/me | 获取当前用户(Token 认证) |
| GET | /api/v1/users | 获取用户列表(Token 认证) |
| GET | /api/v1/users/{uid} | 获取用户详情(Token 认证) |
| POST | /api/v1/users | 创建用户(Token 认证) |
| PUT | /api/v1/users/{uid} | 更新用户(Token 认证) |
| DELETE | /api/v1/users/{uid} | 删除用户(Token 认证) |
| GET | /api/v1/departments | 获取部门列表(Token 认证) |