victorive/superban

轻松地在指定时间段内禁止您的API客户端。

1.0.1 2023-12-22 10:49 UTC

README

Latest Version on Packagist

Superban是一个Laravel包,旨在允许您在指定时间段内禁止API客户端。它允许您轻松限制客户端在特定时间段内可以执行的请求数量,如果他们超过此限制,则将根据指定的时间段被禁止。

安装

使用以下命令通过composer安装包:

composer require victorive/superban

接下来,使用以下命令发布配置文件 (config/superban.php)

php artisan vendor:publish --tag="superban-config"

发布的配置文件使您能够自定义用于速率限制操作的 SUPERBAN_CACHE_DRIVERSUPERBAN_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许可证。有关更多信息,请参阅许可证文件