在laravel中,中間件的作用就是過濾http請求,根據不同的請求來執行不同的邏輯操作;中間件可以進行請求數據的攔截處理和數據檢驗,并且進行邏輯處理后判斷是否允許進入下一個中間件。
本文操作環境:Windows10系統、Laravel6版、Dell G3電腦。
laravel的中間件有什么用
中間件顧名思義是指在請求和響應中間,進行請求數據的攔截處理,數據校驗,并且進行邏輯處理后判斷是否允許進入下一個中間件;中間件分為前綴中間件,后置中間件;可以用于權限認證、日志記錄等。
簡單來說中間件在 laravel 中的作用就是過濾 HTTP 請求,根據不同的請求來執行不同的邏輯操作。
我們可以通過中間件實現以下功能:
-
指定某些路由
-
設置 HTTP 響應頭
-
記錄請求
-
過濾請求的參數
-
決定是否啟用站點維護模式
-
響應前后做一些必要的操作
自定義中間件
命令行執行下面的簡單命令,就可以輕松創建一個新的中間件
php?artisan?make:middleware?<middlewarename> //MiddlewareName?就是你要創建的中間件的名字</middlewarename>
執行上面的命令,Laravel 會在 app/Http/Middleware 目錄下自動創建一個只包含 handle 方法的中間件。
<?php namespace AppHttpMiddleware; use Closure; class RedirectIfSuperAdmin { /** * Handle an incoming request. * * @param IlluminateHttpRequest $request * @param Closure $next * @return mixed */ public function handle($request, Closure $next) { return $next($request); } }
在中間件被調用的時候,handle 方法就會執行。這里需要注意的是 handle 方法默認有兩個參數 $request 和 $next 。 $request 用來接受應用的請求組求, $next 將請求傳遞給應用程序。這兩個參數是 handle 必不可少的!中間件也包括前置中間件和后置中間件。
“前置中間件” 顧名思義在將請求轉發到應用程序之前處理一些邏輯。 另一方面,在中間件之后,在應用程序處理了請求并生成響應之后運行。
前置中間件:
<?php namespace AppHttpMiddleware; use Closure; class RedirectIfSuperAdmin { /** * Handle an incoming request. * * @param IlluminateHttpRequest $request * @param Closure $next * @return mixed */ public function handle($request, Closure $next) { //你的邏輯就在這里 return $next($request); } }
后置中間件:
<?php namespace AppHttpMiddleware; use Closure; class RedirectIfSuperAdmin { /** * Handle an incoming request. * * @param IlluminateHttpRequest $request * @param Closure $next * @return mixed */ public function handle($request, Closure $next) { $response = $next($request); //你的邏輯就在這里 例如 重定向到 `/` return $response; } }
【相關推薦:laravel視頻教程】