Laravel 5 如何实现网站在维护模式下允许指定 IP 用户访问(白名单)

举报
lxw1844912514 发表于 2022/03/27 03:38:19 2022/03/27
【摘要】 为了测试需要,有时候需要在网站处于维护模式下允许特定IP访问网站,在 Laravel 中,这可以通过为维护模式编写自定义中间件来实现。 默认情况下,Laravel 使用 CheckForMaintenanceMode 中间件来判断网站是否处于维护模式并进行相应处理,该中间件的 handle() 方法定义如下: ...

为了测试需要,有时候需要在网站处于维护模式下允许特定IP访问网站,在 Laravel 中,这可以通过为维护模式编写自定义中间件来实现。

默认情况下,Laravel 使用 CheckForMaintenanceMode 中间件来判断网站是否处于维护模式并进行相应处理,该中间件的 handle() 方法定义如下:

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

    return $next($request);
}

我们将使用 Artisan 命令创建新的中间价来替代这一中间件:

php artisan make:middleware CheckForMaintenanceMode

这样会在 app/Http/Middleware 目录下生成一个 CheckForMaintenance.php 文件。

打开该文件,编辑其 handle() 方法如下:

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

    return $next($request);
}

这样,上述代码中指定的 IP 地址即使在网站处于维护模式,依然可以访问网站。

接下来我们只需要将 Laravel 默认的 CheckForMaintenanceMode 中间件替换成我们刚刚创建的中间件即可。打开 app/Http/Kernel.php 将如下这行代码:

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

替换成:

App\Http\Middleware\CheckForMaintenanceMode::class

好了,大功告成,去试试看是否OK吧。当然,你需要将代码中的 IP 替换成你自己的 IP,为了方便修改,还可以将这些 IP 地址放到配置文件中。

https://laravelacademy.org/post/2496.html

文章来源: blog.csdn.net,作者:lxw1844912514,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/lxw1844912514/article/details/100028620

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。