权限治理篇:Vue3 + Spring Security + JWT 认证 + 动态菜单路由 + RBAC + 审计日志全链路设计与实战
系列定位:继“开篇篇:从0到1搭建企业级 LangChain4j + Spring AI 智能对话与知识库框架(架构与模块总览)”之后,本篇聚焦企业级 AI 管理平台治理能力:权限模型、动态菜单路由、按钮级控制、审计日志与国际化工作流,为后续与 Chat/RAG/MCP 模块的统一治理奠定基础。
1. 本文你能收获什么?
- 如何设计“菜单 + 权限 + 路由”三位一体数据结构。
- 用后端返回菜单树动态注入前端路由的工程化步骤。
- RBAC 权限标识体系与按钮级(细粒度)显示/操作控制策略。
- 审计日志埋点与后续可观测扩展预留位。
- 国际化(i18n)工作流与命名规范示例。
- 与 AI 中台其他模块(模型管理 / 对话 / 知识库 / MCP 工具)协作的扩展点。
2. 为什么需要“治理能力”管理平台?
单纯的 CRUD 后台无法满足企业级 AI 应用落地:
- 多身份 & 多角色:区分运营、研发、审计、管理员、普通业务使用者。
- 多维权限:页面、按钮、数据域(租户/部门)与未来成本/模型使用配额控制。
- 合规 & 留痕:操作行为(新增用户、修改角色权限、删除菜单)需审计追踪。
- 可扩展:后续接入模型管理、工具注册、知识库索引、对话会话审计。
管理平台即“治理基座”:集中承载用户与权限体系,并向 AI 功能层提供统一认证与授权数据。
3. 后端结构速览(langchain4j-spring-ai-security-v1)
入口主类:SecurityV1ServerApplication
关键能力:
- Spring Boot + MyBatis + MapperScan。
- JWT 登录认证:
POST /api/v1/auth/login→ 返回 Bearer Token。 - 菜单树接口:
GET /api/v1/menus/tree→ 驱动前端动态路由。 - 用户 / 角色 / 部门 / 岗位管理:组织结构与权限映射基础。
- 审计日志查询:操作记录可检索。
建议增强:
- Token 刷新与黑名单(支持强制下线)。
- 异步审计(MQ/队列)与失败重试策略。
- 统一错误码分层:系统级 / 业务级 / 安全级。
- 多租户隔离(tenantId 透传 + 数据过滤 + 索引前缀)。
4. 前端骨架速览(langchain4j-spring-ai-ui-v1)
目录要点:
src/api:接口与类型封装。src/router:基础路由 + 动态注入逻辑。src/store:登录态、token、权限集合缓存。src/layout:主框架(侧栏 + 顶栏 + 内容区)。src/views:功能页面(用户、角色、菜单、部门、岗位、审计日志等)。src/i18n:多语言资源与规范文档。
技术栈:Vue3 + TypeScript + Vite + Element Plus + Pinia + Axios + vue-i18n。
5. 动态菜单路由注入核心思路
- 用户登录成功后,携带 token 请求菜单树接口。
- 将返回的菜单节点递归转换为路由对象(
RouteRecordRaw)。 - 使用
router.addRoute()注入到既有 layout 下,实现按用户权限动态装配功能。 - 按钮/操作权限在组件中通过权限标识集合决策显示与禁用。
推荐菜单节点字段:
id, parentId, name, path, component, icon, order, perms[], hidden(boolean)
权限标识命名规范:模块:资源:动作,例如:user:list / user:create / role:assign。
6. RBAC 与按钮级权限控制
实现路径:
- 用户 → 角色 → 权限标识集合(多对多)。
- 登录后获取权限集合缓存到
store.permissions。 - 通过自定义指令
v-perm或工具函数hasPerm('user:create')控制按钮、操作列显示。 - 列表操作栏在渲染前过滤不具备的操作。
扩展建议:
- 行/列级数据权限(基于部门或租户过滤)。
- 高风险操作二次确认(删除、角色分配、权限变更)。
- 操作频控(同一敏感接口单位时间调用次数限制)。
7. 国际化(i18n)工作流与规范
工作流:新增界面文案 → 定义 i18n key → 同步添加到 en.json & zh.json → 使用 $t('key')。
示例(密码校验):
enter_password: "请输入密码"
password_min_6: "密码至少 6 位"
好处:统一术语、避免硬编码、支持后续自动抽取/翻译平台接入。
8. 审计日志与可观测预留
审计对象:登录/登出、用户新增修改、角色权限调整、菜单结构变更、敏感操作(禁用账户等)。
后续扩展:
- TraceId 注入响应头(链路可追踪)。
- 指标采集(接口失败率、权限拒绝次数)。
- 风险策略(异常频率/地理位置异常触发告警)。
9. 与 AI 中台其它模块协作
- 统一认证:管理平台签发/验证 JWT,Chat/RAG/MCP 服务复用同 token 校验逻辑。
- 功能集成:菜单增加“模型管理”“知识库索引”“工具注册(MCP)”等分类。
- 权限驱动:不同角色访问不同模型、知识库集合或工具集(如限制某角色调用昂贵模型)。
- 审计延伸:记录对话检索、工具调用参数,用于成本与合规分析。
10. 快速启动(最小示例)
后端(security-v1):
cd langchain4j-spring-ai/langchain4j-spring-ai-security-v1
mvn -DskipTests clean package
# 若出现“没有主清单属性”需确保 spring-boot-maven-plugin 已执行 repackage
java -jar target/langchain4j-spring-ai-security-v1-*.jar
前端(ui-v1):
cd langchain4j-spring-ai-ui/langchain4j-spring-ai-ui-v1
pnpm install
pnpm dev
# .env 中设置 VITE_API_BASE=http://127.0.0.1:9006
浏览器访问:http://localhost:5173(视 Vite 配置)。
10.1 仓库地址
Gitee:https://gitee.com/zhangjq123/langchain4j-spring-agent.git
git clone https://gitee.com/zhangjq123/langchain4j-spring-agent.git
cd langchain4j-spring-agent
10.2 数据库初始化脚本位置
| 模块 | 脚本路径 | 说明 |
|---|---|---|
| security-v1 | langchain4j-spring-ai/langchain4j-spring-ai-security-v1/doc/init.sql |
用户 / 角色 / 菜单 / 审计 / 组织岗位等治理表 |
创建数据库(示例名与脚本中的库名保持一致,脚本里为 langchain4j-spring-ai-v1,如需修改请全局替换后再执行):
CREATE DATABASE IF NOT EXISTS `langchain4j-spring-ai-v1` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
执行初始化:
mysql -u root -p langchain4j-spring-ai-v1 < langchain4j-spring-ai/langchain4j-spring-ai-security-v1/doc/init.sql
10.3 默认账号说明
初始化脚本中已导入示例用户:
| 用户名 | 密码(明文) | 密文(bcrypt) | 角色示例 |
|---|---|---|---|
| admin | 123456 | $2a$10$AwapFP1WbIjtwGYiK8JFiuQfPXMaDyl9hXhoaEGdF0JZBgpEfN1K2 |
SYS_ADMIN / ORG_ADMIN / AUDITOR |
| user | 123456 | $2a$10$imULMsKchYt0128bnhZ0Fe2eaFiLJ3fbDMwygSz6nxuMbtxcpXaNi |
普通用户 |
登录后请立即:
- 在“用户管理”中修改默认密码。
- 调整角色与权限标识(最小授权原则)。
- 若用于生产演示,替换默认 JWT 签名密钥并开启 Token 过期刷新策略。
安全提示:演示环境的初始密码仅用于快速体验,不建议在生产保留;请结合密码复杂度策略、失败锁定、审计阈值等治理手段。
启动排错:
| 问题 | 原因 | 解决 |
|---|---|---|
| 404 / 空白菜单 | 菜单树接口失败或未调用 | 检查登录流程 & F12 网络请求 |
| 按钮缺失 | 权限标识不匹配 | 核对后端返回 perms 与前端指令使用值 |
| 401 未授权 | Token 未带或过期 | 拦截器注入 Bearer;校准服务器时间 |
| 国际化丢失 | 未同步到 en/zh.json | grep key 并补齐 |
| 审计无记录 | 未埋点或异步组件未生效 | 检查切面/队列配置 |
11. 扩展路线图
| 方向 | 增强 | 价值 |
|---|---|---|
| 多租户 | 租户上下文 + 数据隔离 | SaaS 化准备 |
| SSO | OAuth2 / 企业内部统一身份 | 减少重复账号 |
| 操作审批 | 高风险动作工单流 | 合规可控 |
| 审计下沉 | 接入集中日志/链路系统 | 分析与留存 |
| 权限可视化 | 图谱展示 用户→角色→权限 | 治理与排错加速 |
| 菜单建模生成 | 菜单+字段驱动 CRUD 代码生成 | 提升交付效率 |
12. 界面速览(截图)
以下截图均来自目录 img-platform/,按常见使用路径排序:
-
登录页面

-
登录后首页(导航+菜单)

-
个人资料页面

-
用户管理列表

-
用户新增页面

-
用户编辑页面

-
角色管理页面

-
角色新增页面

-
角色编辑页面

-
菜单管理页面

-
菜单新增页面

-
菜单编辑页面

-
审计日志页面

-
部门管理页面

-
部门新增页面

-
部门编辑页面

-
岗位管理页面

-
岗位新增页面

-
岗位编辑页面

提示:如需在外部平台显示不出中文文件名,可临时复制一份使用英文别名;仓库内部保留原始中文更贴近使用场景。
可在发布平台按需插入对应图片增强可读性与视觉记忆点。
13. 为什么这套骨架易扩展?
- 菜单驱动:功能扩展只需新增菜单 + 路由组件。
- 权限原子化:标识粒度可控,从页面 → 按钮 → 动作。
- 分层清晰:api / router / store / layout / views 各司其职。
- 治理组件可插拔:审计、权限校验、国际化均独立,便于替换增强。
14. 总结与行动
如果你正准备:
- 构建自己的 AI 中台或内部智能助手治理后台;
- 将现有零散脚本与模型调用纳入统一权限与审计体系;
- 搭建一个可持续演进(多租户/成本控制/RAG/工具调用治理)的管理骨架;
那可以直接 Fork 本项目的管理平台部分进行二次开发。欢迎补充:多租户、权限可视化、审批流、操作风控等高级能力。
更多推荐


所有评论(0)