首页 » Web技术 » Laravel » 正文

Laravel 5 维护模式以及白名单

你可能会希望在维护模式下你自己依然能够访问你的网站,其实这可以通过编写一个检查维护模式的中间件来实现该功能。

默认情况下,Laravel使用的是 \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class 中间件,这个我们可以在 /laravel/app/Http/Kernel.php 中看到。其中会触法 handle() 方法,该方法代码如下:

public function handle($request, Closure $next)
{
    if ($this->app->isDownForMaintenance()) {
        throw new HttpException(503);
    }

    return $next($request);
}

maintaince-mode-laravel

我们可以通过自定义一个中间件来替换该中间件。

运行命令 php artisan make:middleware CheckForMaintenanceMode ,该命令会生成文件 app/Http/Middleware/CheckForMaintenance.php

打开该文件并修改其中的 handle() 方法使其满足你的要求,如:

public function handle($request, Closure $next)
{
    if ($this->app->isDownForMaintenance() &&
        !in_array($request->ip(), ['123.123.123.123', '124.124.124.124']))
    {
        return response('Be right back!', 503);
    }

    return $next($request);
}

其中的IP数组即为白名单,不管是否处于维护模式,数组中的IP都可以访问网站。

剩下的就是把我们自定义的维护模式中间件替换Laravel自带的中间件了,打开 app/Http/Kernel.php ,并把其中的

Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class

替换为:

App\Http\Middleware\CheckForMaintenanceMode::class

完成上面的步骤即可实现维护模式下的白名单功能了,希望能够帮到你。

英文原文:toniperic.com

发表评论