orkhanahmadov / laravel-ip-middleware
Laravel中间件,用于白名单/黑名单客户端IP地址
1.9.0
2024-05-31 14:45 UTC
Requires
- php: ^8.0
- illuminate/contracts: ^8.0|^9.0|^10.0|^11.0
- illuminate/http: ^8.0|^9.0|^10.0|^11.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^5.0|^6.0|^7.0
- phpunit/phpunit: ^8.0|^9.0|^10.0
README
Laravel中间件,用于白名单/黑名单客户端IP地址
要求
- PHP 8.0 或更高版本
- Laravel 8 或更高版本
安装
您可以通过composer安装此包
composer require orkhanahmadov/laravel-ip-middleware
用法
此包包含WhitelistMiddleware
和BlacklistMiddleware
中间件。您可以在app/Http/Kernel.php
文件中的$routeMiddleware
中注册任意一个或两个
protected $routeMiddleware = [ // ... 'ip_whitelist' => \Orkhanahmadov\LaravelIpMiddleware\WhitelistMiddleware::class, 'ip_blacklist' => \Orkhanahmadov\LaravelIpMiddleware\BlacklistMiddleware::class, ];
您可以在任何路由中使用这些中间件并传递IP地址。
Route::middleware('ip_whitelist:1.1.1.1')->get('/', 'HomeController@index'); Route::middleware('ip_blacklist:3.3.3.3')->get('/', 'PostController@index');
ip_whitelist
中间件将阻止与白名单IP地址不匹配的任何请求。ip_blacklist
中间件将阻止来自黑名单IP地址的请求。
您还可以通过逗号分隔传递多个IP地址
Route::middleware('ip_whitelist:1.1.1.1,2.2.2.2')->get('/', 'HomeController@index');
这将阻止与白名单IP地址列表不匹配的所有请求。
包还允许在配置中设置预定义的IP列表并使用它们。
// config/ip-middleware.php 'predefined_lists' = [ 'my-list-1' => ['1.1.1.1', '2.2.2.2'], 'my-list-2' => ['3.3.3.3', '4.4.4.4'], ];
Route::middleware('ip_whitelist:my-list-1,my-list-2')->get('/', 'HomeController@index'); // you can also mix predefined list with additional IP addresses Route::middleware('ip_whitelist:my-list-1,my-list-2,5.5.5.5,6.6.6.6')->get('/', 'PostController@index');
配置
运行此命令以发布包配置文件
php artisan vendor:publish --provider="Orkhanahmadov\LaravelIpMiddleware\LaravelIpMiddlewareServiceProvider"
ip-middleware.php
配置文件包含以下设置
ignore_environments
- 当应用在这些列出的环境中运行时,中间件忽略IP检查。error_code
- 当请求被拒绝时显示的HTTP代码。custom_server_parameter
- 用于查找IP地址的自定义$_SERVER参数predefined_lists
- 预定义的IP列表
测试
composer test
变更日志
请参阅CHANGELOG以获取更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全
如果您发现任何安全问题,请通过ahmadov90@gmail.com发送电子邮件,而不是使用问题跟踪器。
致谢
许可
MIT许可(MIT)。请参阅许可文件以获取更多信息。