crazydevil/ipfilter

适用于 Laravel 应用程序的 IP 访问过滤器

此包的规范存储库似乎已删除,因此已冻结此包。

v1.1.4 2019-07-19 21:29 UTC

This package is auto-updated.

Last update: 2022-02-20 11:02:26 UTC


README

StyleCI Packagist Packagist Version GitHub repo size GitHub PHP from Packagist

Laravel IP filter

此包提供了一个简单的方法,用于向您的路由添加 IP 过滤器,以限制 Laravel 5 应用程序的用户访问。

安装

通过 Composer

$ composer require crazydevil/ipfilter

Laravel 5.5+ 自动通过自动发现注册服务提供者。在之前的 Laravel 版本中,请将以下行添加到您的 app.php

'providers' => [
    ...
    CrazyDevil\Ipfilter\IpfilterServiceProvider::class,
    ...
]

使用方法

导出过滤配置文件。

php artisan vendor:publish --provider="CrazyDevil\Ipfilter\IpfilterServiceProvider"

将中间件添加到您的 Kernel.php

    protected $routeMiddleware = [
        ...
        'ipfilter' => CrazyDevil\Ipfilter\Ipfilter::class,
        ...
    ]

默认情况下,过滤器仅在 生产环境 中激活。但您可以通过配置文件添加其他环境。

    'environments' => ['production', 'staging'],

过滤 IP 地址

要允许 IP 访问您的路由,您必须将它们添加到配置文件中。

    'allowed_ips' => [
        '127.0.0.1',
        '10.0.0.1',
    ],

添加 IP 地址后,您必须将中间件包含到您的路由中。

定义中间件

对于所有 Web 路由,请将中间件添加到 RouteServiceProvider.php 中的 function mapWebRoutes

protected function mapWebRoutes()
{
    Route::middleware('web')
        ->middleware('ipfilter')
        ->namespace($this->namespace)
        ->group(base_path('routes/web.php'));
}

对于所有 API 路由,请将中间件添加到 RouteServiceProvider.php 中的 function mapApiRoutes

protected function mapApiRoutes()
{
    Route::prefix('api')
        ->middleware('api')
        ->middleware('ipfilter')
        ->namespace($this->namespace)
        ->group(base_path('routes/api.php'));
}

对于特定路由,请将中间件添加到 web.phpapi.php

Route::get('/', function () {
    return view('welcome');
})->middleware('ipfilter');

您还可以接受或拒绝不同路由的访问。例如,所有路由都应从指定的 IP 地址访问,但除 /admin 路由外。为此,您必须在配置文件中定义如下示例:config/ipfilter.php

    'allowed_ips' => [
        '127.0.0.1',
        '10.0.0.1',
    ],
    'routes' => [
        'admin' => []
    ]

web.phpapi.php

Route::get('/', function () {
    return view('welcome');
})->middleware('ipfilter');

Route::get('/admin', function () {
    return view('admin');
})->middleware('ipfilter:admin');

在此示例中,IP 地址 127.0.0.1 和 10.0.0.1 可以访问应用程序中的所有路由,但不能访问 /admin 路由

致谢

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件