davematics / superban
此包的最新版本(v1.0.0)没有可用的许可信息。
此包将添加一个功能,可以在一定时间内完全禁止客户端。
v1.0.0
2023-12-21 12:47 UTC
This package is not auto-updated.
Last update: 2024-09-27 14:40:44 UTC
README
此包包含一个名为 "superban" 的中间件,允许您控制应用程序内的用户访问。
如果用户在特定时间段内发出大量请求,中间件将暂时阻止用户,稍后再解除阻止。
安装
您可以通过 Composer 安装此包
composer require davematics/superban
将服务提供者手动添加到 config/app.php 文件中的 providers 数组中
'Superban' => Davematics\Superban\Facades\Superban::class,
安装后,发布配置文件
php artisan vendor:publish --provider="Davematics\Superban\SuperbanServiceProvider"
这将在您的配置目录中发布一个 superban.php 文件。
在这里,您可以配置不同的缓存驱动程序。 - Redis、数据库等。
用法
Route::middleware(['superban:300,5,2880'])->group(function () { Route::post('/add-interest', [App\Http\Controllers\SomeController::class, 'index']); });
Route::post('/add-interest', [App\Http\Controllers\SomeController::class, 'index'])->middleware(['superban:300,5,2880']);
中间件利用 Laravel 的 RateLimiter 类来跟踪用户在特定时间段内尝试访问资源的次数。
如果用户超过限制,中间件将根据用户的电子邮件、ID 或 IP 地址生成一个键,并将其存储在指定时间段的缓存中。如果在缓存中找到该键,中间件将抛出 UserBannedException。
示例
"superban" 中间件接受三个参数
第一个参数是在被禁止之前用户可以尝试的次数。
第二个参数是在面对禁止之前用户可以在多少分钟内尝试该路由。
最后一个参数是用户被禁止的分钟数。
在路由上,您可以更改参数 300、5、2880 以符合您的规格。
测试
要运行包测试,请使用以下 bash 命令
./vendor/bin/phpunit
安全
如果您发现任何安全相关的问题,请通过电子邮件联系: davgwuche@gmail.com。