Laravel - 工匠下来/维护模式,除了自己的IP

时间:2015-06-10 09:54:05

标签: laravel

目前我使用的是Laravel5。 我的问题是,如果我使用维护模式

php artisan down

怎么能说“除了我自己的ip之外,应用程序已经关闭了”? 所以每个人都看到维护模式,但我仍然可以访问该网站。

6 个答案:

答案 0 :(得分:16)

在Laravel 5中,您必须创建自己的中间件。 在app / Http / Middleware / CheckForMaintenanceMode.php中创建一个文件 您当然可以选择任何文件名。

<?php namespace App\Http\Middleware;

use Closure;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Http\Request;
use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode as MaintenanceMode;

class CheckForMaintenanceMode {

    protected $app;

    public function __construct(Application $app)
    {
        $this->app = $app;
    }

    public function handle(Request $request, Closure $next)
    {
        if ($this->app->isDownForMaintenance() && 
            !in_array($request->getClientIp(), ['8.8.8.8', '8.8.4.4']))
        {
            $maintenanceMode = new MaintenanceMode($this->app);
            return $maintenanceMode->handle($request, $next);
        }

        return $next($request);
    }

}

在你的app / Http / Kernel.php中更改

'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode'

'App\Http\Middleware\CheckForMaintenanceMode'

答案 1 :(得分:6)

现在您可以使用php artisan down --allow=127.0.0.1,或者当然可以将IP更改为其他名称。还支持多个IP,也支持网络。

不确定何时实现,但在5.6版中对我来说效果很好

答案 2 :(得分:1)

    class MyValueFormatter : ValueFormatter() {
        private val days = mapOf(0.0f to "Mon", 20.0f to "Tu", 40.0f to "Wed", 60.0f to "Th", 80.0f to "Fr", 100.0f to "Sa", 120.0f to "Su")

        override fun getAxisLabel(value: Float, axis: AxisBase?): String {
            return if (days.containsKey(value)) days[value] else value.toString()
        }
    }

答案 3 :(得分:1)

在文件 index.php 中更改地址 maintenace.php 例如:

if (file_exists(__DIR__.'/../your-file-name/storage/framework/maintenance.php')) {
require __DIR__.'/../your-file-name/storage/framework/maintenance.php';

}

我使用 Laravel 8。

答案 4 :(得分:0)

您的问题的另一个解决方案是在本地开发,因此只有您可以看到应用程序的开发版本。每个人都可以看到的应用程序(生产服务器上的应用程序)可以设置为维护模式,直到您准备好向全世界展示它。然后,您可以将应用程序部署到服务器并关闭维护模式。

我说的是,可能不需要自动执行此过程,因为您在部署应用程序时可能会出现在服务器上,因此您可以手动转换模式打开和关闭。

使用WAMP / MAMP,Laravel's HomesteadLaravel Valet或专家Laradock可以非常轻松地开发本地。当然,你可以使用任何。

答案 5 :(得分:0)

对于Laravel 8:

即使在维护模式下,也可以使用secret选项来 指定维护模式旁路令牌:

php artisan down --secret="1630542a-246b-4b66-afa1-dd72a4c43515"

将应用程序置于维护模式后,您可以导航到 与此令牌匹配的应用程序URL,Laravel将发出一个 维护模式绕过Cookie进入您的浏览器:

https://example.com/1630542a-246b-4b66-afa1-dd72a4c43515

访问此隐藏路线时,您将被重定向到/ 应用程序的路线。 Cookie发放给您后 浏览器,您将能够正常浏览该应用程序,就像 不在维护模式。

Laravel 8中的维护模式具有一些不错的新功能。Read it here.