MichaelDev / superban
Laravel 包,用于在一段时间内完全禁止客户端
v0.2.2
2023-12-22 09:48 UTC
Requires
- php: ^8.1
- laravel/framework: ^8.0|^9.0|^10.0
Requires (Dev)
- orchestra/testbench: ^8.18
- pestphp/pest: ^2.28
- pestphp/pest-plugin-laravel: ^2.2
README
Laravel Superban
关于项目
Superban 是一个 Laravel 包,提供了一种简单灵活的方法来根据客户端的请求行为禁止他们使用您的 API。您可以为客户端指定请求次数,达到后,客户端将在给定的时间间隔内被禁止。该包建立在 Laravel 内置的速率限制功能之上,并支持不同的缓存驱动器。
安装
您可以通过 composer 安装此包
composer require michaelthedev/superban
安装包后,您需要在您的 Laravel 项目的 config/app.php
文件中注册包的服务提供者
'providers' => [ // ... Michaelthedev\Superban\SuperbanServiceProvider::class, ],
然后,运行以下命令发布包的配置文件
php artisan vendor:publish --provider="Michaelthedev\Superban\SuperbanServiceProvider"
配置
包的配置文件位于 config/superban.php
。在这里,您可以指定要使用的缓存驱动器(Redis、数据库等)以及禁止客户端的参数。
return [ 'cache_driver' => env('SUPERBAN_CACHE_DRIVER', env('CACHE_DRIVER', 'file')), 'requests_before_ban' => env('SUPERBAN_REQUESTS_BEFORE_BAN', 200), 'ban_after' => env('SUPERBAN_BAN_AFTER', 2), 'ban_length' => env('SUPERBAN_BAN_LENGTH', 1440), ];
使用方法
安装和配置包后,您可以在路由上使用 superban
中间件,如下所示
Route::middleware(['superban:200,2,1440'])->group(function () { Route::post('/thisroute', function () { // ... }); Route::post('anotherroute', function () { // ... }); });
在上面的示例中,200
是请求次数,2
是请求次数发生的时间段(分钟数),1440
是用户被禁止的时间段(分钟数)。
superban
中间件考虑了根据用户 ID、IP 地址和电子邮件地址进行禁止的能力。您可以为特定或所有路由应用它。
许可证
Superban 包是开源软件,根据 MIT 许可证 授予许可。
贡献
贡献使开源社区成为一个如此美妙的学习、灵感和创造的地方。您所做的任何贡献都将被 高度重视。
如果您有任何改进建议,请克隆仓库并创建一个拉取请求。您也可以简单地打开一个带有“改进”标签的问题。别忘了为项目加星!再次感谢!
- 克隆项目
- 创建您的功能分支
- 提交您的更改
- 将更改推送到分支
- 打开拉取请求