victorive / superban
轻松地在指定时间段内禁止您的API客户端。
1.0.1
2023-12-22 10:49 UTC
Requires
- php: ^8.1
- illuminate/support: ^10.38
Requires (Dev)
- laravel/pint: ^1.13
- orchestra/testbench: ^8.18
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- phpunit/phpunit: ^10
This package is auto-updated.
Last update: 2024-09-08 21:49:26 UTC
README
Superban是一个Laravel包,旨在允许您在指定时间段内禁止API客户端。它允许您轻松限制客户端在特定时间段内可以执行的请求数量,如果他们超过此限制,则将根据指定的时间段被禁止。
安装
使用以下命令通过composer安装包:
composer require victorive/superban
接下来,使用以下命令发布配置文件 (config/superban.php)
:
php artisan vendor:publish --tag="superban-config"
发布的配置文件使您能够自定义用于速率限制操作的 SUPERBAN_CACHE_DRIVER
和 SUPERBAN_BAN_CRITERIA
参数。这些设置可以在您的 .env 文件中使用您首选的值进行修改。
如果您选择使用“数据库”作为您的缓存驱动程序,请记住运行 php artisan cache:table
以创建必要的缓存存储表。有关更多信息,请参阅缓存文档。
配置
SUPERBAN_CACHE_DRIVER
参数确定用于Superban操作的缓存驱动程序。支持的驱动程序包括"array", "database", "file", "memcached", "redis", "dynamodb", 和 "octane".
SUPERBAN_BAN_CRITERIA
参数设置速率限制或禁止用户的条件。- 支持以下选项:
"user_id", "email", 和 "ip"
。
示例配置
return [ /** * The cache driver to use for superban operations. * * Supported drivers: "array", "database", "file", * "memcached", "redis", "dynamodb", "octane" */ 'cache_driver' => env('SUPERBAN_CACHE_DRIVER', 'file'), /** * The ban criteria to use when rate-limiting/banning users. * * Supported options: "user_id", "email", "ip", */ 'ban_criteria' => env('SUPERBAN_BAN_CRITERIA', 'ip'), ];
更新您的 .env
文件,为以下密钥提供您首选的值
SUPERBAN_CACHE_DRIVER= {{您首选的缓存驱动程序}}
SUPERBAN_BAN_CRITERIA= {{您首选的禁止条件}}
使用
要利用Superban的功能,将以下内容添加到您的 app/Http/Kernel.php
文件中。
protected $middlewareAliases = [ // ... 'superban' => \Victorive\Superban\Middleware\SuperbanMiddleware::class, ];
然后您可以使用中间件规则来保护您的路由。例如
- 路由分组
Route::middleware(['superban:100,2,720'])->group(function () { Route::post('/someroute', function () { // ... }); Route::post('anotherroute', function () { // ... }); });
- 单个路由
Route::post('/thisroute', function () { // ... })->middleware(['superban:100,2,720']);
在上面的示例中,
- 100 是允许的最大请求数量,
- 2 是请求可以发生的时长(分钟),
- 720 是超过限制后用户被禁止的时长(分钟)。
测试
要运行测试,使用以下命令:
vendor/bin/phpunit
更新日志
有关最近更新的信息,请参阅更新日志文件。
贡献
欢迎贡献!请随意fork存储库,进行任何更改或报告任何问题,然后提交PR。
许可证
此包采用MIT许可证。有关更多信息,请参阅许可证文件。