laravel5.*轻松实现维护模式以及允许指定 IP 用户访问(添加用户白名单)

Song3344 次浏览0个评论2017年11月08日

aravel使用中,我们需要对网站进行维护,升级以及程序修复。在升级过程中,常常会抛出错误页面或者出现其他问题,这样对我们的用户体验一点都不友好,还好,在laravel中,给出了一个好的解决方案:

app/start/global.php中给出了提示代码:

App::down(function()
{
    return Response::view('maintenance', array(), 503);
});

一、实现网站维护模式

resourse/view/error下新建503.blade.php文件,这就是提示维护中的页面,可以根据自己的需求自定义。

# 开启维护模式
php artisan down
# 关闭维护模式
php artisan up

二、允许指定 IP 用户访问即添加用户白名单

1、首先,我们要判断现在是否开启了维护模式,在上面文章中我们有讲到在哪里定义维护模式,这里我们用如下代码检测维护模式

if(App::isDownForMaintenance())
{
    die("现在是维护模式");
}

2、我们用Artisan命令在app/Http/Middleware目录下生成个ForMaintenance.php文件来处理我们的业务逻辑,在handle()下加入我们的业务逻辑,完整代码如下:

<?php
namespace App\Http\Middleware;
use App;
use Closure;
class ForMaintenanceMode
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
   {
    if (App::isDownForMaintenance() && !in_array($request->getClientIp(), ['127.0.0.1', '123.0.0.1']))
        {
            return response('维护中!', 503);
        }
        return $next($request);
    }
}

这里我们$request->getClientIp()代表获取当前IP,如果是服务器在线上,就是自己的IP了,如果实在本地测试,一般都是127.0.0.1了

3、打开app/Http/Kernel.php把我们处理业务逻辑的中间价在$middleware中替换掉

protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
    ];

替换成:

protected $middleware = [
        Middleware\CheckForMaintenanceMode::class,
    ];

提交评论

请登录后评论

用户评论

    当前暂无评价,快来发表您的观点吧...

更多相关好文

    当前暂无更多相关好文推荐...