编程

[Laravel 扩展包] Laravel Auditing: 一款强大的模型审计工具

298 2024-06-22 23:38:00

概述

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 中启用 FacadesEloquent:

// ...

$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 审计数据保存的地方。