操作日志
操作日志用于安全审计,自动记录用户在系统中的所有重要操作。
设计原理
系统利用 NestJS 的 Interceptor(拦截器) 捕获被 @Action 装饰器标记的请求,自动记录操作信息。
自动记录的内容
| 字段 | 说明 |
|---|---|
| 操作名称 | 由 @Action 装饰器指定 |
| 操作人 | 当前登录用户 |
| 请求参数 | 请求体或查询参数 |
| 请求方法 | GET / POST / PATCH / DELETE |
| 请求路径 | API 路径 |
| IP 地址 | 客户端 IP |
| 执行耗时 | 毫秒 |
| 操作状态 | 成功/失败 |
| 错误信息 | 失败时的异常信息 |
使用方法
在 Controller 的方法上添加 @Action 装饰器:
typescript
@Post()
@Action('新增模板') // 自动记录操作名称、参数、IP、耗时等
async create(@Body() createDto: CreateDto) {
return this.tempService.create(createDto);
}装饰器接收一个字符串参数作为操作描述,系统会自动获取请求上下文信息。
日志管理
在「操作日志」页面可以:
- 按时间范围、操作人、操作类型筛选日志
- 查看日志详情(包含完整的请求参数和响应)
- 按操作状态筛选(成功/失败)
API 接口
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /sys/sys-action-log | 获取操作日志列表 |
| GET | /sys/sys-action-log/:id | 获取日志详情 |