中间件
基本介绍
中间件用于拦截或过滤应用的HTTP请求,并进行必要的业务处理。
可通过如下命令快速生成全局中间件:
php think make:middleware Check
上述指令会 app/middleware
目录下面生成一个Check
中间件,内容如下:
<?php
namespace app\middleware;
class Check
{
public function handle($request, \Closure $next)
{
if ($request->param('name') == 'think') {
return redirect('index/think');
}
return $next($request);
}
}
中间件的入口执行函数必须是handle
方法,而且第一个参数是Request
对象,第二个参数是一个闭包。上述中间件中判断当前请求参数name
等于think
时进行重定向处理。否则,请求将进一步传递到应用中。
注意事项
中间件分为:全局中间件、应用中间件、路由中间件、控制器中间件;只有在路由中间件中才能获取请求欲访问的控制器和方法名称,因此路由中间件也是最常用的中间件;路由中间件并非只拦截定义了路由的请求,只是路由中间件与全局中间件的执行时机不同而已。下面是各中间件的执行顺序和时机:全局中间件->应用中间件->路由中间件->控制器中间件。
如下图,配置全局路由中间件:
详见:https://www.kancloud.cn/manual/thinkphp6_0/1037493