ThinkPHP的中間件如何使用

小樊
109
2024-06-14 21:16:33

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方法。

0