zoukankan      html  css  js  c++  java
  • Laravel 5 如何实现网站在维护模式下允许指定 IP 用户访问(白名单)

    为了测试需要,有时候需要在网站处于维护模式下允许特定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 将如下这行代码:

    IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode::class

    替换成:

    AppHttpMiddlewareCheckForMaintenanceMode::class

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

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

  • 相关阅读:
    J2EE13个规范--【J2EE】
    事件监听、持有对方的引用--【J2SE】
    TCP协议:服务端和客户端demo--【J2SE】
    线程:Interrupt、Sleep、Join、线程同步--【J2SE】
    1. Visual C++ 6.0 安装和使用
    无法连接虚拟设备sata0:1,因为主机上没有相应的设备
    Linux文件夹文件创建、删除
    服务器
    linux 下 apache启动、停止、重启命令
    Apache部署静态html
  • 原文地址:https://www.cnblogs.com/lxwphp/p/10118055.html
Copyright © 2011-2022 走看看