php手记之08-tp5中间件

01-创建中间件

php think make:middleware 中间件的名称

这个指令会 application/http/middleware目录下面生成一个中间件文件。

 02-注册中间件三种方式

方式1-控制器注册  pathinfo,自定义路由不适用

<?php

namespace app\index\controller;

use think\Controller;

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 [
    // [app\http\middleware\CheckUser::class],
    
    //传单个值
    // [app\http\middleware\CheckUser::class,'lili'],

    // 传多个值
    [app\http\middleware\CheckUser::class,['name'=>'lili','age'=>234]],
    [app\http\middleware\CkeckLogin::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);
    }

猜你喜欢

转载自www.cnblogs.com/somethingWithiOS/p/11968549.html