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 '收尾工作我来做'; } }

 

posted @ 2021-01-11 21:46  棉花糖88  阅读(65)  评论(0)    收藏  举报