orkhanahmadov/laravel-ip-middleware

Laravel中间件,用于白名单/黑名单客户端IP地址

1.9.0 2024-05-31 14:45 UTC

This package is auto-updated.

Last update: 2024-08-31 00:31:26 UTC


README

Latest Stable Version Latest Unstable Version Total Downloads License

Build Status Test Coverage Maintainability Quality Score StyleCI

Laravel中间件,用于白名单/黑名单客户端IP地址

要求

  • PHP 8.0 或更高版本
  • Laravel 8 或更高版本

安装

您可以通过composer安装此包

composer require orkhanahmadov/laravel-ip-middleware

用法

此包包含WhitelistMiddlewareBlacklistMiddleware中间件。您可以在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)。请参阅许可文件以获取更多信息。