Laravel教學
Laravel環境安裝配置
Laravel應用程序結構
Laravel配置
Laravel路由
Laravel中間件
Laravel控制器
Laravel請求
Laravel Cookie
Laravel響應
Laravel視圖
Laravel重定向
Laravel操作數據庫
Laravel插入數據庫表數據
Laravel檢索查詢數據
Laravel更新數據
Laravel刪除數據
Laravel錯誤和日誌記錄
Laravel表單處理
Laravel本地化
Laravel會話(session)
Laravel驗證
Laravel文件上傳
Laravel發送郵件
Laravel Ajax
Laravel錯誤處理
Laravel事件處理
Laravel Facades
Laravel安全
Laravel中間件
正如其名稱提示,中間件作爲請求和響應之間的中間人。它是一種過濾機制類型。例如,Laravel包括一箇中間件用來驗證應用程序的用戶認證與否。如果用戶通過驗證,它將被重定向到主頁,否則將被重定向到登錄頁面。
中間件可以通過執行以下命令來創建 -
php artisan make:middleware
使用你的中間件名稱替換
示例
第1步 - 現在,讓我們創建 AgeMiddleware 中間件。我們需要執行下面的命令-
php artisan make:middleware AgeMiddleware
第2步 - 命令成功執行後,會收到以下輸出 -
第3步 − AgeMiddlware 會在 app/Http/Middleware 文件中創建。新創建的文件將自動創建下面代碼:
\\App\\Http\\Middleware\\Authenticate::class, 'auth.basic' => \\Illuminate\\Auth\\Middleware\\AuthenticateWithBasicAuth::class, 'guest' => \\App\\Http\\Middleware\\RedirectIfAuthenticated::class, \]; ### 示例 我們已經在前面的例子中已創建 AgeMiddleware 中間件。 現在,我們可以在具體的路由中間件屬性登記。註冊代碼如下所示。 以下是應用程序代碼 **app/Http/Kernel.php** \\App\\Http\\Middleware\\Authenticate::class, 'auth.basic' => \\Illuminate\\Auth\\Middleware\\AuthenticateWithBasicAuth::class, 'guest' => \\App\\Http\\Middleware\\RedirectIfAuthenticated::class, 'Age' => \\App\\Http\\Middlware\\AgeMiddleware::class, \]; } 中間件參數 --------- 我們也可以傳遞中間件參數。例如,如果您的應用程序有不同角色,如用戶,管理員,超級管理員等,並且要驗證基於角色的動作,這可以通過參數傳遞中間件來實現。我們創建的中間件包含以下功能,我們可以通過 $next 參數之後,自定義參數。 public function handle($request, Closure $next) { return $next($request); } ### 示例 第1步 - 通過執行以下命令創建角色中間件 - php artisan make:middleware RoleMiddleware 第2步 - 成功執行後,會收到以下輸出 ![Laravel中間件](https://asset.1ju.org/cmsstatic/laravel-12.png) 第3步 − 添加以下代碼到新創建的角色中間件的處理方法 - app/Http/Middleware/RoleMiddleware.php. Test Controller."; } } 第8步 - 添加下面一行代碼到 app/Http/routes.php 文件。 app/Http/routes.php Route::get('role',\[ 'middleware' => 'Role:editor', 'uses' => 'TestController@index', \]); 第9步 - 訪問以下網址來測試帶參數中間件 [https://asset.1ju.org/role](https://asset.1ju.org/role) 第10步 - 輸出顯示如下圖中所示。 ![Laravel中間件](https://asset.1ju.org/cmsstatic/laravel-14.png) 可終止的中間件 ----------- 響應已經發送給瀏覽器後可終止中間件執行一些任務。這可以通過使用創建中間件「終止」方法的中間件來實現。可終止中間件會註冊全局中間件。該終止方法將接受兩個參數:$request 和 $response。終止方法可以被創建,如在下面顯示的代碼。 ### 示例 第1步- 通過執行以下命令創建 TerminateMiddleware 中間件。 php artisan make:middleware TerminateMiddleware 第2步 - 這將產生以下輸出 - ![Laravel中間件](https://asset.1ju.org/cmsstatic/laravel-15.png) 第3步 - 複製下面的代碼到新創建文件 - TerminateMiddleware 在 ***app/Http/Middleware/TerminateMiddleware.php*** 文件中如下: Executing statements of terminate method of TerminateMiddleware."; } } 第4步 − 註冊 TerminateMiddleware 到 **app\\Http\\Kernel.php** 文件中. ![Laravel中間件](https://asset.1ju.org/cmsstatic/laravel-8.jpg) 加了灰色突出的線條的是該文件中註冊的 TerminateMiddleware 中間件。 第5步 - 執行以下命令來創建一個控制器。 php artisan make:controller ABCController 第6步 - URL成功執行後,會收到以下輸出 - ![Laravel中間件](https://asset.1ju.org/cmsstatic/laravel-16.png) 第7步 - 將以下代碼複製到 **app/Http/ABCController.php** 文件。 ***app/Http/ABCController.php*** ABC Controller."; } } 第8步 - 添加下面的一行代碼到 **app/Http/routes.php** 文件。 ***app/Http/routes.php*** Route::get('terminate',\[ 'middleware' => 'terminate', 'uses' => 'ABCController@index', \]); 第9步 - 訪問以下網址測試可終止中間件。 https://asset.1ju.org/terminate 第10步 - 如下面的圖片輸出的結果。 ![Laravel中間件](https://asset.1ju.org/cmsstatic/laravel-17.png)