01-创建中间件
php think make:middleware 中间件的名称
这个指令会 application/http/middleware目录下面生成一个中间件文件。
02-注册中间件三种方式
方式1-控制器注册 pathinfo,自定义路由不适用
<?php namespace appindexcontroller; use thinkController; class Middleware extends Controller { // 控制器的方法,要在pathinfo的情況下才可以,在自定義路由裡不適用 protected $middleware = ['CkeckLogin']; public function middle() { dump('----'); # code... } }
方式2--自定义路由 middleware
//单路由 Route::get('middle','@index/middleware/middle')->middleware('CkeckLogin'); // 路由组注册中间件 Route::group(['middleware'=>['CkeckLogin']],function(){ Route::get('middle','@index/middleware/middle'); });
方式3-配置文件注册,配置文件的所在模块的位置内的所有控制器都会调用,每个模块都可以有自己的middleware.php文件
01-配置文件middleware.php里注册多个中间件的模板引入(传参也可以在这里)
<?php return [ // [apphttpmiddlewareCheckUser::class], //传单个值 // [apphttpmiddlewareCheckUser::class,'lili'], // 传多个值 [apphttpmiddlewareCheckUser::class,['name'=>'lili','age'=>234]], [apphttpmiddlewareCkeckLogin::class,'lili'], ];
路由也可以传参
02-路由里也可以传参 Route::get('middle','@index/middleware/middle')->middleware('CkeckLogin','lili'); // 路由组注册中间件 Route::group(['middleware'=>['CkeckLogin']],function(){ Route::get('middle','@index/middleware/middle'); }); // 路由组注册中间件并传值1 Route::group(['prefix'=>'@index/middleware'],function(){ Route::get('middle','/middle'); })->middleware('CkeckLogin','libai'); // 路由组注册中间件并传值2 Route::group(['middleware'=>['CkeckLogin:ksksks']],function(){ Route::get('middle','@index/middleware/middle'); });
控制器里使用(取参使用)
// $name传值 public function handle($request, Closure $next,$data) { echo 'checkuser----'.$data['name'].'---'.'age='.$data['age']; return $next($request); }