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

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 将如下这行代码:

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

替换成:

App\Http\Middleware\CheckForMaintenanceMode::class

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/112633.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 如何使用JavaScript UI控件,构建Electron应用程序[通俗易懂]

    如何使用JavaScript UI控件,构建Electron应用程序[通俗易懂]如何使用JavaScript UI控件,构建Electron应用程序

  • linux的vim撤销命令,[Linux] Vim 撤销 回退 操作「建议收藏」

    linux的vim撤销命令,[Linux] Vim 撤销 回退 操作「建议收藏」在vi中按u可以撤销一次操作u撤销上一步的操作Ctrl+r恢复上一步被撤销的操作注意:如果你输入“u”两次,你的文本恢复原样,那应该是你的Vim被配置在Vi兼容模式了。重做如果你撤销得太多,你可以输入CTRL-R(redo)回退前一个命令。换句话说,它撤销一个撤销。要看执行的例子,输入CTRL-R两次。字符A和它后面的空格就出现了:youngintelligentturtle有一个特殊…

  • SynchronousQueue用例「建议收藏」

    SynchronousQueue用例「建议收藏」SynchronousQueue是无缓冲区的阻塞队列,即不能直接向队列中添加数据,会报队列满异常,如下所示:importjava.util.concurrent.SynchronousQueue;publicclassSynchronousQueueExp{ publicstaticvoidmain(String[]args){ SynchronousQueu…

  • MYSQL8.0以上版本正确修改ROOT密码[通俗易懂]

    MYSQL8.0以上版本正确修改ROOT密码[通俗易懂]部署环境:安装版本redhatCent7.0MYSQL版本8.0.2.0成功部署完毕后出现故障情况:1.正常启动MYSQL服务后,敲Linux中root账户和密码进入不去。2.从/etc/my.cnf配置文件中加入skip-grant-table后正常登陆,但是不能创建用户等多操作总结来说:想进去mysql后不能操作多指令,操作多指令又不能进去mysql,死…

  • arm64(aarch64)安装centos 7.5.1804

    arm64(aarch64)安装centos 7.5.1804总体说明Arm64的centos版本自7.5.1804以后不再和7.4、7.3、7.2等之前的一样直接提供一个rootfs.tar.xz的压缩包,全部变成了ISO的安装文件,因此需要EFI来引导安装,如果Aarch64的cpu用的是uboot就只有干瞪眼了,笔者花了一翻功夫,终于找到如何从ISO中提取出centos7.5.1804文件系统的方法,方便使用uboot的用户可以使用centos7….

    2022年10月16日
  • 汉字转16进制java_java实现汉字转unicode与汉字转16进制实例[通俗易懂]

    汉字转16进制java_java实现汉字转unicode与汉字转16进制实例[通俗易懂]本文实例讲述了java实现汉字转unicode与汉字转16进制的实现方法。分享给大家供大家参考。具体实现方法如下:一、汉字转unicodepublicstaticStringtoUnicode(Strings){Stringas[]=newString[s.length()];Strings1=””;for(inti=0;i<s.length();i++…

    2022年10月31日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号