2.6 中间件上
知识梳理
1 用于拦截和过滤HTTP请求,并进行相应处理
2 这些请求的功能可以是URL重定向、权限验证等
一 定义中间件
第一步:在admin 目录下 新建 middleware目录 新建Check.php
<?php namespace app\admin\middleware; class Check { //第一个参数是请求 第二个参数是闭包 public function handle($request,\Closure $next){ // 处理HTTP请求 中间件代码
// 如果参数中name值等于think的时候 跳转到后台首页 if ($request->param('name') == 'think') { return redirect('../'); } //这里回调本身放回response对象 return $next($request);//固定格式 } }
第二步 在根目录下middleware.php中注册自己的中间件
\app\admin\middleware\Check::class,
第三步 浏览器测试
http://www.blog.com/?name=think //访问后调整到了 http://www.blog.com/
二 前置 后置 中间件
//1 前置中间件 写在 $next($request)前面 应用场景:在执行主体程序之前做一些 登录判断 跳转 权限等工作 //2 后置中间件 写在 $next($request)后面 应用场景:等待主体结束后 再执行的操作 比如写入日志等
<?php namespace app\admin\middleware; class Check { public function handle($request,\Closure $next){ echo '前置中间件代码执行区域'; $response = $next($request); echo '后置中间件代码执行区域'; return $response; } }
三 结束调度
最后执行的方法 可以做一些收尾工作
<?php namespace app\admin\middleware; use think\Response; class Check { public function handle($request,\Closure $next){ echo '前置中间件代码执行区域'; $response = $next($request); echo '后置中间件代码执行区域'; return $response; } //结束调度 public function end(Response $response){ echo '收尾工作我来做'; } }

浙公网安备 33010602011771号