首页 > 解决方案 > 如何有条件地在 Kernel.php 中加载 Laravel 中间件?

问题描述

我需要为本地环境而不是生产环境加载中间件。它当前定义在$middleware数组的 app/Http/Kernel.php 中。

是否可以检查那里的环境,然后使用三元表达式?还是环境变量还没有加载?使用 Laravel 5.8

标签: laravel

解决方案


kernel.php只是想法,您可以像下面这样设置中间件组

内核.php

protected $middlewareGroups = [
        'local' => [
            // \App\Http\Middleware\EncryptCookies::class,
            // \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            // \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            // \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            // \App\Http\Middleware\VerifyCsrfToken::class,
            // \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],

        'dev' => [
            ...
        ],
    ];

RouteServiceProvider.php

现在您可以在 RouteServiceProvider 中设置本地中间件。

public function map()
    {
        if ($this->app->environment('local)) {
            Route::middleware('local')
                 ->namespace($this->namespace)
                 ->group(base_path('routes/web.php'));
        }
    }

未测试


推荐阅读