larowka/prevent-duplicate-requests

Laravel应用程序防止重复请求的中间件。

v1.1.0 2024-06-21 14:31 UTC

This package is auto-updated.

Last update: 2024-09-21 15:05:49 UTC


README

Latest Version on Packagist Total Downloads License: MIT PHPUnit

Laravel的中间件,用于基于用户操作防止重复请求。

此中间件旨在管理和防止在指定时间段内的重复请求,确保只处理唯一的请求。

安装

您可以通过Composer安装此包

composer require larowka/prevent-duplicate-requests

使用

Laravel 11

全局中间件

要在Laravel 11中全局应用中间件以处理每个HTTP请求,您可以在bootstrap/app.php文件中使用withMiddleware方法

use \Larowka\PreventDuplicateRequests\Middleware\PreventDuplicateRequests;

->withMiddleware(function ($middleware) {
    // ...
    $middleware->append(PreventDuplicateRequests::class);
});

将中间件分配给路由

如果您想将中间件分配给特定路由,请在定义路由时使用middleware方法

Copy code
use \Larowka\PreventDuplicateRequests\Middleware\PreventDuplicateRequests;

Route::get('/example', function () {
    // Route logic...
})->middleware(PreventDuplicateRequests::class);

中间件别名

您可以在bootstrap/app.php文件中为中间件定义别名,以使用中间件类的短名称

use \Larowka\PreventDuplicateRequests\Middleware\PreventDuplicateRequests;

->withMiddleware(function ($middleware) {
    $middleware->alias([
        'preventDuplicate' => PreventDuplicateRequests::class,
    ]);
});

定义后,您可以在分配中间件到路由时使用别名

Route::get('/example', function () {
    // Route logic...
})->middleware('preventDuplicate');

Laravel 10

将中间件添加到Laravel应用程序的HTTP内核中

// app/Http/Kernel.php

protected $routeMiddleware = [
    // ...
    'preventDuplicate' => \Larowka\PreventDuplicateRequests\Middleware\PreventDuplicateRequests::class,
];

将中间件应用于您的路由

Route::middleware('preventDuplicate')->get('/example', function () {
    return 'Unique request handled.';
});

或全局应用

// app/Http/Kernel.php

protected $middleware = [
    // ...
    \Larowka\PreventDuplicateRequests\Middleware\PreventDuplicateRequests::class,
];

功能

  • 防止重复请求:在指定时间段内阻止重复请求。
  • 灵活配置:自定义请求缓存的时间长度。
  • 支持认证用户:区分认证用户和非认证用户。
  • 幂等性支持:确保对用户特定操作执行幂等操作。

测试

使用PHPUnit运行测试

composer test

变更日志

有关最近更改的更多信息,请参阅变更日志

贡献

有关详细信息,请参阅贡献指南

安全

如果您发现任何安全问题,请通过电子邮件larowka@icloud.com联系,而不是使用问题跟踪器。

鸣谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证