在laravel中,中間件的作用就是過濾HTTP請求,根據(jù)不同的請求來執(zhí)行不同的邏輯操作;中間件可以進(jìn)行請求數(shù)據(jù)的攔截處理和數(shù)據(jù)檢驗,并且進(jìn)行邏輯處理后判斷是否允許進(jìn)入下一個中間件。
本文操作環(huán)境:Windows10系統(tǒng)、Laravel6版、Dell G3電腦。
laravel的中間件有什么用
中間件顧名思義是指在請求和響應(yīng)中間,進(jìn)行請求數(shù)據(jù)的攔截處理,數(shù)據(jù)校驗,并且進(jìn)行邏輯處理后判斷是否允許進(jìn)入下一個中間件;中間件分為前綴中間件,后置中間件;可以用于權(quán)限認(rèn)證、日志記錄等。
簡單來說中間件在 laravel 中的作用就是過濾 HTTP 請求,根據(jù)不同的請求來執(zhí)行不同的邏輯操作。
我們可以通過中間件實現(xiàn)以下功能:
-
指定某些路由
-
設(shè)置 HTTP 響應(yīng)頭
-
記錄請求
-
過濾請求的參數(shù)
-
決定是否啟用站點維護(hù)模式
-
響應(yīng)前后做一些必要的操作
自定義中間件
命令行執(zhí)行下面的簡單命令,就可以輕松創(chuàng)建一個新的中間件
php artisan make:middleware <MiddlewareName> //MiddlewareName 就是你要創(chuàng)建的中間件的名字
執(zhí)行上面的命令,Laravel 會在 app/Http/Middleware 目錄下自動創(chuàng)建一個只包含 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); } }
在中間件被調(diào)用的時候,handle 方法就會執(zhí)行。這里需要注意的是 handle 方法默認(rèn)有兩個參數(shù) $request 和 $next 。 $request 用來接受應(yīng)用的請求組求, $next 將請求傳遞給應(yīng)用程序。這兩個參數(shù)是 handle 必不可少的!中間件也包括前置中間件和后置中間件。
“前置中間件” 顧名思義在將請求轉(zhuǎn)發(fā)到應(yīng)用程序之前處理一些邏輯。 另一方面,在中間件之后,在應(yīng)用程序處理了請求并生成響應(yīng)之后運(yùn)行。
前置中間件:
<?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; } }
【