创建一个路由中间件,并通过访问url地址来触发中间件输出“Hello MiddleWare”
【1】Laravel中间件:
1、可以过滤访问应用的 HTTP 请求。例如,在中间件里进行用户身份验证。如果用户未被认证,中间件会将用户重定向到登录界面。如果用户通过身份验证,中间件将进一步允许请求到应用程序中。
2、可以使用中间件来执行各种任务。例如:CORS 中间件可以负责为所有离开应用的响应添加合适的头部信息;日志中间件可以记录所有传入应用的请求。
【2】创建中间件的方法:
使用脚手架自动创建:php artisan make:middleware 中间件名称。该命令会在 app/Http/Middleware 目录下创建一个新的 中间件 类
创建好的基本结构如下:
<?php namespace App\Http\Middleware; use Closure; class MyName { public function handle($request, Closure $next) { if (?) { return redirect('home'); } return $next($request); } }
【3】中间件特性
全局中间件:如果自定义的中间件要处理每个 HTTP 请求,需要在 app/Http/Kernel.php 中的 $middleware 属性中列出这个中间件,这样就可以为路由分配此中间件。
中间件组件:可以一个键把多个中间件打包成一个组,方便将他们应用到路由中去。需要使用 Http 核心的 $middlewareGroups 属性。使用方法如下:
Route::get('/', function () { //})->middleware('web');
Route::group(['middleware' => ['web']], function () { //});
中间件可以使用 app/Http/Kernel.php 文件的 $middlewarePriority 属性指定优先级,也可以附加参数,定义路由时通过一个 : 来隔开中间件名称和参数来指定中间件参数。多个参数就使用逗号分隔。
在中间件上调用 terminate 方法的时候, Laravel 将从 服务容器 中解析出一个新的中间件实例。如果在调用 handle 和 terminate 方法的同时使用相同的中间件实例,请使用容器的 singleton 方法在容器中注册中间件。
【4】练习使用中间件
创建中间件CheckAge :php artisan make:middleware CheckAge
注册中间件别名:
应用到路由中:Route::get('/middle', 'Test@middle')->middleware('checkage');
中间件Handle中代码:
实例<?php namespace App\Http\Middleware; use Closure; class CheckAge { public function handle($request, Closure $next) { //$username = echo 'Hello MiddleWare!'; return $next($request); } } 运行实例 »点击 "运行实例" 按钮查看在线实例
运行效果: