[Laravel 扩展包] Laravel Auditing: 一款强大的模型审计工具
概述
Laravel Auditing 包是 Laravel 开发人员的一个强大工具,它用来确保应用中的数据安全且平稳运行。它为 Eloquent 模型提供了详细的审计功能,使开发人员能够跟踪模型中发生的每一个更改,包括记录的创建、修改和删除,以及对其属性的任何更改。
该软件包具有许多有用的功能,可以轻松地自定义和控制审核过程。例如,它包含了一个允许开发人员审核和清除审核记录的 Auditor
类,以及可用于在审核属性之前修改属性的 Modifier
。该包还提供了各种演示选项,以不同的方式访问元数据和修改后的数据。解析器(Resolvers)提供了一种方便的方式来获取审计的基本数据,而驱动器(driver)则处理审计记录的存储和修剪。
Laravel Auditing 包进一步提供了转换功能,使开发人员能够在存储审计数据之前转换审计数据,这对于重新格式化数据以与其他系统兼容非常有用。标签(Tag)是该包的另一个有用功能,它使开发人员能够标记审计日志并对其进行筛选和排序,尤其是在具有许多审计记录的大型应用中。
最后,该包包括一个事件系统,该系统提供了一个简单的观察者模式实现,允许开发人员订阅和监听审计事件。此功能对于基于特定审核事件触发自定义操作或通知特别有用。总的来说,对于那些需要严格控制应用数据的开发人员来说,Laravel Auditing 包是一个必不可少的工具。
为什么使用 Laravel Auditing?
你可能希望在应用中使用 Laravel Auditing 的原因有几个:
审计: Laravel Auditing 允许你轻松跟踪 Eloquent 模型的更改。这对于审计以及检测潜在的安全漏洞或其他问题都很有用。
可自定义: 该包具有高度可定制性,具有广泛的功能,允许你控制审核过程以满足特定需求。例如,你可以在审核属性之前对其进行修改,并转换审核数据以满足需求。
灵活的存储: 该包支持多种存储选项,包括数据库、Elasticsearch 和 MongoDB。这意味着你可以选择最适合需求和基础架构的存储选项。
高效: Laravel Auditing 被设计为高效和高性能,使对应用的性能影响最小。
易用: 该包易于安装及配置,带有简单的 API,使得只需使用几行代码就能轻松审计模型。
通知: 事件系统允许你根据特定的审核事件触发自定义操作或通知。这对于跟踪关键更改或响应潜在的安全问题尤其有用。
可扩展: 凭借标记和过滤审计日志的能力,Laravel Auditing 非常适合具有许多审计记录的大型应用。此外,其事件系统提供了一个简单的观察者模式实现,允许你订阅和监听审计事件,这对于基于特定审计事件触发自定义操作或通知非常有用。
特性
以下是一些亮点:
Auditor
Auditor 类负责审计及清理审计记录。
Modifiers
允许你在审核之前修改属性。使用此功能可以忽略或修改敏感数据。
Presentation
元数据和修改后的数据可以通过多种方式访问。
Resolvers
解析器(Resolver)提供了一种方便的方式来获取审计的基本数据。
Drivers
除了存储模型属性的更改,驱动器(driver)还可以在设置审核阈值时修整数据。
Transformation
审核的数据可以在保存前进行转换。
Tags
标签对审核日志进行标记,对筛选非常有用。
Events
审计的事件提供了一个简单的观察者模式实现,允许订阅和监听审计事件。
Transition
能够使用审核记录在可审核(Auditable)模型的状态之间转换。
安装
可通过 Composer 进行安装
composer require owen-it/laravel-auditing
升级
升级时,请确保 audits
表 schema 也进行更新!
配置
Laravel 和Lumen 的配置略有不同,因此以下是每个框架的说明。
Laravel
编辑 config/app.php
文件,并且添加下列代码注册服务提供者:
'providers' => [
// ...
OwenIt\Auditing\AuditingServiceProvider::class,
// ...
],
Laravel 版本 ≥ 5.5,可略过此步。
Lumen
编辑 bootstrap/app.php
文件,并添加下列代码注册服务提供者:
// ...
$app->register(OwenIt\Auditing\AuditingServiceProvider::class);
// ...
同时需要在 bootstrap/app.php
中启用 Facades
和 Eloquent
:
// ...
$app->withFacades();
$app->withEloquent();
// ...
Lumen 中不存在 vendor:publish
命令,需要安装额外的包:
composer require irazasyed/larasupport
安装完该包后,必须在 bootstrap/app.php
中注册其服务提供者:
// ...
$app->register(Irazasyed\Larasupport\Providers\ArtisanServiceProvider::class);
// ...
注册服务提供者是必须的,为的是发布配置!T
发布
配置所选框架后,使用以下命令发布配置:
php artisan vendor:publish --provider "OwenIt\Auditing\AuditingServiceProvider" --tag="config"
这将生成 config/audit.php
配置文件
Lumen 默认不会从 config
中读取。请确保在启动时加载配置。请编辑 bootstrap/app.php
:
// ...
$app->configure('audit');
return $app;
// ...
数据库
使用如下命令发布数据库迁移:
php artisan vendor:publish --provider "OwenIt\Auditing\AuditingServiceProvider" --tag="migrations"
自定义
如有需要,可自定义迁移文件。
完成后,执行 artisan
命令,在数据库中创建 audits
表格,完成迁移:
php artisan migrate
这是默认情况下,Audit
审计数据保存的地方。