Laravel_Middleware

Laravel 维护模式

当你的应用程序处于维护模式时,所有传递至应用程序的请求都会显示出一个自定义视图

Laravel Middleware

HTTP 中间件提供了一个方便的机制来过滤进入应用程序的 HTTP 请求 Laravel 框架已经内置了一些中间件,包括维护、身份验证、CSRF 保护,等等

全局中间件

若是希望每个 HTTP 请求都经过一个中间件,只要将中间件的类加入到 app/Http/Kernel.php 的 $middleware 属性清单列表中。

###路由指派中间件

  • 创建一个中间件

    php artisan make:middleware MyMiddleware
    
  • 注册中间件

    protected $routeMiddleware = [
    
        'my'=>\App\Http\Middleware\MyMiddleware::class,
    ];
    
  • 在路由上使用中间件

    Route::get('my','DemoController@getHome')->middleware('my');
    
  • 中间件组

    通过指定键名的方式来将相关的中间件分配到一个组里面去。

    protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
    ],
    
    Route::group(['middleware' => ['web']], function () {
        //
    });
    

中间件参数

public function handle($request, Closure $next,$role)
{
echo $role;
return $next($request);
}

//中间件参数的路由
Route::get('rule/{id}','DemoController@getHome')->middleware('rule:test');

Terminable 中间件

在http响应之后执行中间件的内容
Laravel 内置的「session」中间件存储的 session 数据是在响应被发送到浏览器之后才进行写入的。想要做到这一点,你需要定义中间件为「terminable」

如果本文对您有所帮助,您可以点打赏击请作者喝杯咖啡。