generalfocus / limitshield
LimitShield 是一个中间件软件包,旨在高效地管理和执行 API 速率限制。
1.0.2
2024-06-10 17:47 UTC
Requires
- php: ^7.4|^8.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
README
LimitShield 是一个 Laravel 中间件软件包,旨在高效地管理和执行 API 速率限制。它提供可配置的速率限制,支持基于 IP 和基于用户的限制,可以无缝集成 Redis 以实现分布式速率限制,并提供了对违规响应的灵活性。
特性
- 可配置的速率限制
- 基于 IP 和基于用户的限制
- Redis 集成以实现分布式速率限制
- 可自定义的速率限制违规响应
安装
要求
- PHP ^7.4|^8.0
- Laravel ^8.0|^9.0|^10.0|^11.0
- Redis(用于分布式速率限制)
分步安装
-
需求包
使用 Composer 将
LimitShield
添加到您的 Laravel 项目中composer require generalfocus/limitshield:*
-
发布配置
发布配置文件以自定义设置
php artisan vendor:publish --provider="GeneralFocus\LimitShield\Providers\PackageServiceProvider" --tag="config"
-
配置中间件
将
RateLimitMiddleware
添加到您的 HTTP 核心中。编辑app/Http/Kernel.php
protected $routeMiddleware = [ // Other middleware 'rate.limit' => \GeneralFocus\LimitShield\Http\Middleware\RateLimitMiddleware::class, ];
用法
将中间件应用于路由
您可以将速率限制中间件应用于特定的路由或路由组
use Illuminate\Support\Facades\Route; Route::middleware('rate.limit')->group(function () { Route::get('/api/resource', 'ApiResourceController@index'); });
或者,您可以直接在路由定义中应用中间件
use Illuminate\Support\Facades\Route; Route::get('/api/resource', 'ApiResourceController@index')->middleware('rate.limit:limit=100,duration=60');
配置限制
编辑 config/limitshield.php
文件以设置所需的速率限制和其他配置
return [ 'limits' => [ 'global' => [ 'enabled' => true, 'max_requests' => 100, 'decay_minutes' => 1, ], 'ip' => [ 'enabled' => true, 'max_requests' => 50, 'decay_minutes' => 1, ], 'user' => [ 'enabled' => true, 'max_requests' => 200, 'decay_minutes' => 1, ], ], 'redis' => [ 'connection' => 'default', ], 'response' => [ 'message' => 'Too many requests, please try again later.', 'retry_after' => 'Retry-After', ], ];
贡献
指南
- 分叉存储库。
- 创建一个新分支(
git checkout -b feature/YourFeature
)。 - 提交您的更改(
git commit -am 'Add some feature'
)。 - 推送到分支(
git push origin feature/YourFeature
)。 - 创建一个新的拉取请求。
此 README 提供了有关在 Laravel 应用程序中安装、配置和使用 LimitShield 的全面说明。欢迎您为其开发贡献力量并提高其功能!