第十四章. 系统管理(七)系统审计:通知公告与日志管理
第十四章. 系统管理(七)系统审计:通知公告与日志管理
Prorise第十四章. 系统审计:通知公告与日志管理
摘要:本章我们将学习系统管理中两个“保障型”模块:通知公告与日志管理。我们将重点探索 RVP 5.x 新增的 SSE 实时消息推送机制,并深入理解“操作日志”和“登录日志”在系统安全审计与问题追溯中的核心价值。
14.1. 通知公告:基于 SSE 的实时推送
在“系统管理”菜单中,“通知公告”是一个相对简单的功能模块,其核心是一个带“富文本编辑器”的增删改查(CRUD)。
我们点击 系统管理 -> 通知公告,可以新增或修改公告。
在“修改”界面,我们可以看到它支持完整的富文本编辑,包括设置字体、样式、上传图片等。

[重点] 5.x 的 SSE 实时推送
如果仅仅是 CRUD,这个模块的价值并不大。RVP 5.x 为其赋予了一个核心的现代化功能:基于 SSE (Server-Sent Events) 的实时消息推送。
我们来做一个实验:
- 保持
admin账号在线。 - 点击“新增”,创建一个“APP 更新通知”并“确定”。
- 现象:点击“确定”的瞬间,
admin浏览器右上角的“小铃铛”立刻出现了红点,点开就能看到这条新公告。
这就是 SSE 在起作用。系统在新增公告后,会向所有 当前在线 的客户端推送一个“广播”事件。
关键:广播机制(非持久化收件箱)
这里我们必须厘清一个二次开发中至关重要的概念:RVP 提供的这个“小铃铛”不是一个持久化的“用户收件箱”。
我们通过两个现象来证明这一点:
- 现象一:登录即推送“欢迎”
我们退出登录,然后重新登录。每次登录,都会收到一条“欢迎登录”的消息。这证明“小铃铛”里的消息并 不是 存储在数据库中的“未读列表”,而更像是一个临时的“事件”展示器。 - 现象二:离线用户收不到
- 我们保持
admin登录。 - 我们让
Prorise账号 保持离线。 admin发布一条“新公告”。Prorise此时 再登录。- 结果:
Prorise不会 收到“新公告”的“小铃铛”提醒。他只会收到那条“欢迎登录”的消息。
- 我们保持
核心结论(二次开发必读):
RVP 5.x 内置的通知公告是一个 “广播” 系统。它只负责向 当前在线 的用户推送实时消息。
- 优点:轻量、实时,技术栈新(SSE)。
- 局限:如果用户不在线,他就会 错过 这个推送。他必须手动点开“通知公告”菜单(如果他有权限)才能查阅历史记录。
- 二次开发:如果你的项目需要一个像 QQ、微信那样的、能记录“未读/已读”状态的、持久化的“我的消息”收件箱,那么这个模块只是一个 起点。你将需要在此基础上进行扩展,比如创建一张
sys_user_notice关联表来记录每个用户的读取状态。
14.2. 日志管理(一):操作日志 (AOP 审计)
在系统的运维阶段,“日志管理”是我们排查问题的“黑匣子”。我们点击 系统管理 -> 日志管理,它分为“操作日志”和“登录日志”。
我们先看“操作日志”(sys_oper_log)。
这个模块记录了用户(主要是 admin)在后台的 所有关键操作:修改了哪个模块、执行了什么操作、成功还是失败。

这个功能是如何实现的?
它并非由开发者在每个“修改”、“删除”方法里手动编写 log.save() 代码。RVP 在后端使用了 AOP (面向切面编程)。
开发者只需要在需要被审计的 Controller 方法上加一个 @Log 注解(例如 @Log(title = "参数管理", businessType = BusinessType.DELETE)),RVP 的 AOP 切面就会在方法执行前后,自动捕获信息并存入数据库。
操作日志的真正价值在于 问题追溯。
场景:第二天上班,你发现“参数设置”里某个关键 IP 被改错了,导致业务不通。
排查:
- 进入“操作日志”。
- 在“系统模块”搜索框中输入
参数管理。 - 在“操作类型”中选择
修改。 - 点击“搜索”。
系统会立刻列出所有对“参数管理”的修改记录,清楚地显示:谁(操作人员)在什么时间(操作时间)从哪个 IP(操作地址)修改了什么(请求参数)。
我们还可以点击任意一条日志的“详细”按钮,查看“黑匣子”的内部。

这里记录了:
- 请求信息:请求的 URL、方法(
PUT)。 - 调用方法:精确到后端
com.ruoyi...的哪个类、哪个方法。 - 请求参数:(重点)
Prorise提交的 JSON 数据 被完整记录下来了。 - 返回参数 / 异常信息:
- 如果操作成功,这里会显示
null或成功信息。 - 如果操作失败(比如我们去删除一个“内置参数”),这里会 完整记录 Java 的异常堆栈信息(如
内置参数不能删除),是开发者 Debug 的利器。
- 如果操作成功,这里会显示
管理员可以通过“清空”或“删除”来管理日志,也可以“导出”Excel 进行长期归档。
14.3. 日志管理(二):登录日志 (安全与解锁)
如果说“操作日志”是追溯“谁动了我的数据”,“登录日志”就是追溯“谁试图进入我的系统”。
我们切换到“登录日志”(sys_logininfor)标签页。
这里记录了每一次登录尝试的详细信息:

- 登录账号:
Prorise,admin… - 客户端/设备:
PC,Android… - 登录 IP / 地点
- 操作系统 / 浏览器
- 登录状态:
成功还是失败 - 提示消息:如果失败,原因是什么(如
密码输入错误)
“登录日志”不仅仅是“看”,它还是一个 交互式的安全工具。RVP 内置了防暴力破解机制:同一账号连续输错 5 次密码,该账号将被锁定 10 分钟。
这个“锁定”功能,正是通过“登录日志”来解除的。
我们来模拟一次“攻击”与“解锁”的完整流程:
- 模拟攻击:
- 打开一个新的浏览器(或退出登录)。
- 输入用户名
Prorise。 - 故意 输入 5 次错误的密码。
- 在第 5 次失败后,系统提示:“密码输入错误 5 次,账户锁定 10 分钟”。
- 验证锁定:
- 此时,即使你输入了 正确 的密码,系统依然提示:“账户已锁定,请 10 分钟后再试”。用户已无法登录。
- 管理员介入(解锁):
admin登录后台,进入“登录日志”模块,点击“刷新”。- 会看到
Prorise刚才的 5 条“失败”记录,以及后续的“锁定”记录。 - 管理员 选中
Prorise的任意一条登录记录,点击顶部的“解锁”按钮。 - 系统提示“解锁成功”。
- 恢复登录:
Prorise所在的浏览器,无需等待 10 分钟,立刻使用 正确 密码尝试登录。- 结果:登录成功。
这个“解锁”功能,是 RVP 登录日志模块的 核心价值,它将“日志审计”和“安全运维”完美地结合在了一起。
14.4 第十四章总结
本章我们学习了两个“保障型”模块。
- 通知公告:它是一个 SSE 广播系统,用于向 在线用户 推送实时消息。我们必须清楚它 不是 一个持久化的“用户收件箱”,离线用户会错过推送。
- 操作日志:它是一个基于 AOP 的“审计黑匣子”,忠实记录了所有关键操作的“输入参数”和“异常信息”,是 问题追溯 的第一现场。
- 登录日志:它不仅是“审计日志”,更是一个 交互式安全工具。它记录登录尝试,并在用户被“防爆破解”机制锁定时,提供**“解锁”**功能,是管理员的必备工具。









