创建中间件
tp6更目录cmd命令
php think make:middleware Check
会自动创建好中间件
这里拿验证Check做演示
<?php
declare (strict_types = 1);
namespace app\middleware;
use think\response\Json;
use think\facade\Cache;
class Check
{
/**
* 处理请求
*
* @param \think\Request $request
* @param \Closure $next
* @return Response
*/
public function handle($request, \Closure $next)
{
$token = $request->get("token");
$user = json_decode($request->get("login_name"));
if(!empty($user->user)){
$token1 = Cache::get($user->user);
if(empty($token1)){
return json(206);
}
if($token != $token1){
return json(206);
}
}else{
return json(206);
}
return $next($request);
}
}
在路由上使用中间件
middleware(\app\middleware\Check::class);//中间件的文件路径
middleware([\app\middleware\Check::class,\app\middleware\Auth::class]);//如果执行多个中间件
对于经常要使用的中间件定义一个别名,在
config\middleware.php
配置文件中,设置
<?php
// 中间件配置
return [
// 别名或分组
'alias' => [
'auth' => app\middleware\Auth::class,
'check' => app\middleware\Check::class,
],
];
路由改为
middleware(['auth','check']);
也可以组合命名
return [
'name' => [\app\middleware\Check::class,\app\middleware\Auth::class],
];
路由改为
middleware('name');
控制器使用中间件
<?php
namespace app\admin\controller;
class Index extends BaseController
{
protected $middleware = \app\middleware\Check::class;
public function index()
{
return 'Hello,ThinkPHP!<br/>';
}
}
或配置的别名
<?php
namespace app\admin\controller;
class Index extends BaseController
{
protected $middleware = ['auth','check'];
public function index()
{
return 'Hello,ThinkPHP!<br/>';
}
}