Laravel開發(fā):如何使用Laravel Middleware中間件?

作為一款流行的php框架,laravel 在開發(fā)過程中經(jīng)常使用middleware中間件。在本文中,我們將涵蓋使用 laravel 中間件的基礎(chǔ)知識(shí)以及如何創(chuàng)建和使用自定義 middleware 中間件。

Laravel Middleware 中間件是一種用于過濾 HTTP 請求的機(jī)制。它們通常用于處理復(fù)雜的 HTTP 請求邏輯,例如驗(yàn)證用戶身份、授予訪問權(quán)限或記錄請求日志。

Laravel自帶了一些內(nèi)置的 Middleware 中間件,例如:

  • auth: 用于檢查用戶是否已登錄。
  • throttle: 用于限制用戶在一定時(shí)間內(nèi)可以進(jìn)行的請求次數(shù)。

在本文中,我們將使用 Laravel 自帶的 Middleware 中間件來演示這些基本概念。此外,我們還將創(chuàng)建自定義 Middleware 中間件,以演示如何編寫自己的中間件。

使用內(nèi)置 Middleware 中間件

讓我們首先看一下如何在 Laravel 中使用內(nèi)置 Middleware 中間件。要使用內(nèi)置中間件,您只需要將其添加到$routeMiddleware數(shù)組中。在appHttpKernel.php文件中,可以找到該數(shù)組。這個(gè)數(shù)組包含了所有默認(rèn)的中間件,并且每個(gè)中間件都有一個(gè)與其關(guān)聯(lián)的鍵名。

例如,我們可以通過使用auth鍵名來啟用認(rèn)證中間件:

protected $routeMiddleware = [     'auth' => IlluminateAuthMiddlewareAuthenticate::class, ];

Laravel 還支持對(duì)中間件進(jìn)行參數(shù)化傳遞。例如,如果我們要使用throttle限制用戶在60秒內(nèi)最多可以訪問5個(gè)頁面,可以這么寫:

protected $routeMiddleware = [     'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class.':5,60', ];

注意:這里的數(shù)字順序與throttle中間件構(gòu)造函數(shù)的參數(shù)順序相反。這是因?yàn)長aravel支持用字符串傳遞參數(shù)。

創(chuàng)建自定義 Middleware 中間件

除了使用預(yù)先定義的 Middleware 中間件外,Laravel 還支持創(chuàng)建自己的中間件。讓我們看一下如何創(chuàng)建并使用自定義 Middleware 中間件。

為了演示這點(diǎn),我們將創(chuàng)建一個(gè)名為MyMiddleware 的自定義中間件。這個(gè)中間件只需要在請求處理之前輸出文本即可。

首先,我們需要通過artisan命令創(chuàng)建一個(gè)中間件類:

php artisan make:middleware MyMiddleware

然后,我們需要打開app/Http/Middleware/MyMiddleware.php文件,并在handle方法中編寫我們的中間件邏輯:

<?php namespace AppHttpMiddleware;  use Closure;  class MyMiddleware {     public function handle($request, Closure $next)     {         echo "My middleware is working!";         return $next($request);     } }

在這個(gè)例子中,我們只需要在處理請求之前先輸出一條文本。這個(gè)文本可以是任何內(nèi)容,例如您可以輸出一些調(diào)試信息、日志或錯(cuò)誤信息等等。

在編寫了我們的 Middleware 中間件之后,我們需要將其注冊到 Laravel 應(yīng)用程序中。在app/Http/Kernel.php文件中,我們可以將我們的中間件類名稱添加到$routeMiddleware數(shù)組中。這將使中間件可用于路由和控制器。

protected $routeMiddleware = [     'mymiddleware' =&gt; AppHttpMiddlewareMyMiddleware::class, ];

注意:如您所見,我們將MyMiddleware類的名稱作為鍵名,以便在后面的路由和控制器中使用。

要使用這個(gè)新的中間件,只需要將其添加到照常的middleware數(shù)組中即可。在我們的例子中,我們可以將其添加到網(wǎng)站的路由中:

Route::middleware(['mymiddleware'])-&gt;group(function () {     // Your routes here });

現(xiàn)在,當(dāng)我們接收到來自應(yīng)用程序的請求時(shí),我們的中間件將會(huì)首先被調(diào)用,然后再進(jìn)行請求處理。

總結(jié)

在本文中,我們已經(jīng)討論了 Laravel 中 Middleware 中間件的基礎(chǔ)知識(shí),并演示了如何使用 Laravel 內(nèi)置的中間件以及如何創(chuàng)建和使用自定義 Middleware 中間件。這里只是一個(gè)簡單的示例,Middleware 中間件的概念非常重要,它們可以用來解決許多處理 HTTP 請求的復(fù)雜問題。因此,在 Laravel 開發(fā)過程中,學(xué)習(xí)如何使用 Middleware 中間件是非常重要的一步。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊5 分享