thinkphp6 前置/后置中间件
中间件是在请求具体的操作之前还是之后执行,完全取决于中间件的定义本身
下面是一个前置行为的中间件
代码执行前执行
1 <?php 2 3 namespace app\middleware; 4 5 class Before 6 { 7 public function handle($request, \Closure $next) 8 { 9 // 添加中间件执行代码 10 11 return $next($request); 12 } 13 }
下面是一个后置行为的中间件
代码执行后执行
<?php namespace app\middleware; class After { public function handle($request, \Closure $next) { $response = $next($request); // 添加中间件执行代码 return $response; } }
后置中间件可以获取当前控制器名和方法名
可用于后台权限管理
<?php
declare (strict_types = 1);
namespace app\index\middleware;
use think\facade\Session;
class Show
{
public function handle($request, \Closure $next)
{
$response = $next($request);
dump(request()->controller().'/'.request()->action());
$url = request()->controller().'/'.request()->action();
if (!Session::has('member_name')){
$currenturl = ['Product/product'];
if (in_array($url,$currenturl)){
return redirect((string)url('Login/login'));
}
}
return $response;
}
}



浙公网安备 33010602011771号