- 全局中间件
- 路由中间件
全局中间件将在应用程序的每个HTTP请求运行,而路由中间件将被分配到一个特定的路由。中间件可在 app/Http/Kernel.php 注册.
该文件包含两个属性: $middleware 和 $routeMiddleware。$middleware 属性用于注册全局中间件,$routeMiddleware属性用于注册路由指定中间件。
protected $middleware = [ IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode::class, AppHttpMiddlewareEncryptcookies::class, IlluminatecookieMiddlewareAddQueuedcookiesToResponse::class, IlluminateSessionMiddlewareStartSession::class, IlluminateViewMiddlewareShareErrorsFromSession::class, AppHttpMiddlewareVerifyCsrfToken::class, ];要注册路由特定中间件,添加键和值到$routeMiddleware 属性。
protected $routeMiddleware = [ 'auth' => AppHttpMiddlewareAuthenticate::class, 'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class, 'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class, ];示例
我们已经在前面的例子中已创建 AgeMiddleware 中间件。 现在,我们可以在具体的路由中间件属性登记。注册代码如下所示。
以下是应用程序代码 app/Http/Kernel.php AppHttpMiddlewareAuthenticate::class,
'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class,
'Age' => AppHttpMiddlwareAgeMiddleware::class,
];
}
中间件参数
我们也可以传递中间件参数。例如,如果您的应用程序有不同角色,如用户,管理员,超级管理员等,并且要验证基于角色的动作,这可以通过参数传递中间件来实现。我们创建的中间件包含以下功能,我们可以通过 $next 参数之后,自定义参数。
public function handle($request, Closure $next) {
return $next($request);
}
示例
第1步 - 通过执行以下命令创建角色中间件 -
php artisan make:middleware RoleMiddleware第2步 - 成功执行后,会收到以下输出

第3步 − 添加以下代码到新创建的角色中间件的处理方法 - app/Http/Middleware/RoleMiddleware.php.
第4步 − 在 appHttpKernel.php 文件中注册角色中间件。 加入灰色突出的线条的是在该文件中注册 RoleMiddleware 中间件。
第5步 - 执行以下命令来创建测试控制器 -
php artisan make:controller TestController第6步 - 成功执行后,您会收到以下输出 -
第7步 - 将以下代码复制到 app/Http/TestController.php 文件。app/Http/TestController.php
Test Controller."; } }第8步 - 添加下面一行代码到 app/Http/routes.php 文件。app/Http/routes.php
Route::get('role',[ 'middleware' => 'Role:editor', 'uses' => 'TestController@index', ]);第9步 - 访问以下网址来测试带参数中间件http://localhost:8000/role
第10步 - 输出显示如下图中所示。
可终止的中间件响应已经发送给浏览器后可终止中间件执行一些任务。这可以通过使用创建中间件“终止”方法的中间件来实现。可终止中间件会注册全局中间件。该终止方法将接受两个参数:$request 和 $response。终止方法可以被创建,如在下面显示的代码。
示例 第1步- 通过执行以下命令创建 TerminateMiddleware 中间件。php artisan make:middleware TerminateMiddleware第2步 - 这将产生以下输出 -
第3步 - 复制下面的代码到新创建文件 - TerminateMiddleware 在 app/Http/Middleware/TerminateMiddleware.php 文件中如下:
Executing statements of terminate method of TerminateMiddleware."; } }第4步 − 注册 TerminateMiddleware 到 appHttpKernel.php 文件中.
加了灰色突出的线条的是该文件中注册的 TerminateMiddleware 中间件。
第5步 - 执行以下命令来创建一个控制器。php artisan make:controller ABCController第6步 - URL成功执行后,会收到以下输出 -
第7步 - 将以下代码复制到 app/Http/ABCController.php 文件。app/Http/ABCController.php
ABC Controller."; } }第8步 - 添加下面的一行代码到 app/Http/routes.php 文件。app/Http/routes.php
Route::get('terminate',[ 'middleware' => 'terminate', 'uses' => 'ABCController@index', ]);第9步 - 访问以下网址测试可终止中间件。http://localhost:8000/terminate
第10步 - 如下面的图片输出的结果。









