ThinkPHP6中间件

可以通过命令行指令快速生成中间件

//单应用创建中间件
php think make:middleware Check

//多应用创建中间件
php think make:middleware Index@Check

指令会在你指定的目录下创建一个 middleware目录,生成一个叫Check中间件

<?php

namespace app\middleware;

class Check
{
    public function handle($request, \Closure $next)
    {

        return $next($request);
    }
}

中间件的入口执行方法必须是handle方法,而且第一个参数是Request对象,第二个参数是一个闭包;创建成功时会自动生成

中间件还分前后置

中间件是在请求具体的操作之前还是之后执行,完全取决于中间件的定义本身。

前置中间件:

        

<?php

namespace app\middleware;

class Before
{
    public function handle($request, \Closure $next)
    {
        // 添加中间件执行代码

        return $next($request);
    }
}

后置中间件:

<?php

namespace app\middleware;

class After
{
    public function handle($request, \Closure $next)
    {
		$response = $next($request);

        // 添加中间件执行代码

        return $response;
    }
}

在ThinkPHP5.1以上的版本中,前置中间件和后置中间件是有区别的,前置中间件获取不到控制器的名称和方法名称,后置中间件是可以获取到的,但是在新的ThinkPHP中做了修改,唯一区别变成了是否能获取到执行的路由

在中间件中可以做防翻墙操作:

<?php

namespace app\goods\middleware;

class UserCheck
{
    /**
     * 处理请求
     *
     * @param \think\Request $request
     * @param \Closure       $next
     * @return Response
     */
    public function handle($request, \Closure $next)
    {
        //判断session中是否有值
        if (!session('username')) {
            return redirect('login');
        }
        return $next($request);
    }
}




session在ThinkPHP6中是未开启的,需要注册开启:

在middleware.php中添加

<?php
// 这是系统自动生成的middleware定义文件
return [
    'think\middleware\SessionInit'
];
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值