TP6 控制器向中间件传参
文档上只写了中间件向控制器怎么传参的,但是没有写控制器向中间件传参的。
中间件向控制器传参
<?php
namespace app\middleware;
class Hello
{
public function handle($request, \Closure $next)
{
$request->hello = 'ThinkPHP';
return $next($request);
}
}
app/config 内注册中间件别名
<?php
// 中间件配置
return [
// 别名或分组
'alias' => [
'Jwt' => app\common\middleware\Jwt::class,
],
// 优先级设置,此数组中的中间件会按照数组中的顺序优先执行
'priority' => [],
];
控制器
控制器这里写了一样的两个中间件,但是只会执行相同中间件靠前的一个
class Member extends Base
{
protected $middleware = [
'Jwt:1'=>[ // play接口判断用户已登录并且满18才可访问
'only' => [
'play'
]
],
'Jwt' // 其他接口只判断用户是否登录
];
Jwt中间件
class Jwt {
// 这里的type为控制器传参的参数
public function handle(\think\Request $request, \Closure $next,$type = 0) {
// 判断用户是否登录
// 已登陆用户信息
$member = [
'id' => '20240710',
'age' => 18
];
if ($type == 1){
// 判断用户是否满18
if($member['age'] < 18){
return json([
'code' => 1,
'message' => '未满十八周岁禁止入内!',
'data' => []
]);
}
}
return $next($request);
}