ThinkPHP的中間件可以在應(yīng)用的配置文件中進(jìn)行配置和使用。在ThinkPHP的應(yīng)用配置文件config.php中,有一個(gè)middleware配置項(xiàng),可以將需要使用的中間件進(jìn)行配置。比如:
return [
// 其他配置項(xiàng)
// 中間件配置
'middleware' => [
// '中間件名' => '中間件路徑/類名'
'auth' => app\middleware\Auth::class,
],
];
在上面的示例中,我們配置了一個(gè)名為auth的中間件,對(duì)應(yīng)的類為app\middleware\Auth。中間件類的編寫規(guī)則也比較簡(jiǎn)單,只需要包含一個(gè)handle方法即可,該方法接收兩個(gè)參數(shù)$request和$next,分別代表請(qǐng)求對(duì)象和下一個(gè)中間件。
namespace app\middleware;
class Auth
{
public function handle($request, \Closure $next)
{
// 在請(qǐng)求處理之前執(zhí)行的代碼
$response = $next($request);
// 在請(qǐng)求處理之后執(zhí)行的代碼
return $response;
}
}
在控制器中使用中間件也很簡(jiǎn)單,只需要在控制器的$middleware屬性中進(jìn)行配置即可。
namespace app\controller;
use think\Controller;
class Index extends Controller
{
// 中間件配置
protected $middleware = ['auth'];
public function index()
{
return 'Hello, ThinkPHP!';
}
}
在上面的示例中,我們將auth中間件應(yīng)用到了Index控制器中的所有方法上。當(dāng)訪問Index控制器的任何一個(gè)方法時(shí),都會(huì)先執(zhí)行auth中間件的handle方法。