审计日志
Doggy 提供全链路的系统操作审计能力,通过 AuditService 记录所有关键操作,存储在 App\Entity\System\AuditLog。
概述
审计日志系统由以下部分组成:
AuditLog实体(src/Entity/System/AuditLog.php):日志持久化AuditService(src/Service/System/AuditService.php):日志记录服务- 审计日志入口在
App\Controller\Admin\SecurityConfigController
记录内容
每条审计日志包含:
action:操作类型(login_success、login_failure、create、update、delete)category:分类(security、business、system)details:操作详情(JSON 格式)performer:执行操作的用户
使用方式
php
use App\Service\System\AuditService;
class SomeService
{
public function __construct(private AuditService $auditService) {}
public function doSomething(): void
{
// 登录成功
$this->auditService->log('login_success', 'security', [], $user);
// 登录失败
$this->auditService->log('login_failure', 'security', [
'username' => $email,
'error' => $exception->getMessage(),
]);
// 数据操作
$this->auditService->log('update', 'business', [
'entity' => Employee::class,
'id' => $employee->getId(),
'changes' => $changes,
]);
}
}集成
审计日志已自动集成到主要安全流程中:
登录认证
App\Security\AppCustomAuthenticator 自动记录:
php
// 登录成功时
$this->auditService->log('login_success', 'security', [], $user);
// 登录失败时
$this->auditService->log('login_failure', 'security', [
'username' => $email,
'error' => $exception->getMessage(),
]);安全要求
- 审计日志仅审计员可查看(
ROLE_AUDITOR,通过ThreeOfficersVoter的AUDIT_VIEW权限) - 日志存储到数据库,支持追溯和导出
- 支持按时间范围、用户、操作类型搜索