🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
中间件是在请求具体的**操作之前****还是之后执行**,完全取决于中间件的定义本身 下面是一个前置行为的中间件 代码执行前执行 ~~~ 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; } } ~~~ ![](https://img.kancloud.cn/90/ab/90abb50c7b46c8851bf277b2b2d56b69_1890x401.png) ![](https://img.kancloud.cn/e7/fa/e7fa0635468349493f3f135ea4a9a8e4_1907x845.png)