Ez azt jelenti, hogy amikor a felhasználó (Laravel nézet) kérést intéz a szerverhez (Laravel vezérlő), a kérés a köztes szoftveren keresztül megy át. Így a köztes szoftver ellenőrizheti, hogy a kérés hitelesített-e vagy sem:
Laravel lehetővé teszi defifejezze be és használjon további köztes szoftvereket a hitelesítés kivételével számos feladat végrehajtásához.
A Laravel köztes szoftverek, például a hitelesítés és a CSRF-védelem a címtárban találhatók app/Http/Middleware .
Azt mondhatjuk tehát, hogy a köztes szoftver egy http kérés szűrő, amelyen keresztül lehetőség van a feltételek ellenőrzésére és a műveletek végrehajtására.
Új köztes szoftver létrehozásához a következő parancsot futtatjuk:
php artisan make:middleware <name-of-middleware>
Mi létrehozzuk a middleware
és úgy hívjuk CheckAge
, artisan
a következőképpen válaszol nekünk:
A fenti ablak azt mutatja, hogy a köztes szoftver sikeresen létrejött a következő néven: CheckAge ".
Ha meg szeretné tudni, hogy a CheckAge köztes szoftver létrejött-e vagy sem, lépjen a projekthez az app/Http/Middleware mappában, és látni fogja az újonnan létrehozott fájlt.
Az újonnan létrehozott fájl a következő kóddal rendelkezik
<?php
namespace App\Http\Middleware;
use Closure;
class CheckAge
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
return $next($request);
}
}
A middleware használatához regisztrálnunk kell.
A Laravelben kétféle köztes szoftver létezik:
Middleware globale
Route Middleware
Il globális köztes szoftver végrehajtásra kerül az alkalmazás minden HTTP kérésére, míg a Route Middleware egy adott útvonalhoz lesz hozzárendelve. A Middleware-t a címen lehet regisztrálni app/Http/Kernel.php. Ez a fájl két tulajdonságot tartalmaz $middleware e $routeMiddleware . A $middleware tulajdonság a globális köztes szoftver és a tulajdonjog regisztrálására szolgál $routeMiddleware útvonal-specifikus köztes szoftver regisztrálására szolgál.
A globális köztes szoftver regisztrálásához sorolja fel az osztályt a $middleware tulajdonság végén.
protected $middleware = [
\App\Http\Middleware\TrustProxies::class,
\App\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
Az útvonal-specifikus köztes szoftver regisztrálásához adja hozzá a kulcsot és az értéket a $routeMiddleware tulajdonsághoz.
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];
Mi alkottunk CheckAge az előző példában. Most már regisztrálhatjuk ezt a köztes szoftver útvonal tulajdonságában. Az ilyen regisztráció kódja az alábbiakban látható.
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'Age' => \App\Http\Middleware\CheckAge::class,
];
A Middleware segítségével is átadhatunk paramétereket.
Például, ha alkalmazásának különböző szerepei vannak, például felhasználói, rendszergazdája, kiemelt rendszergazdája stb. és a szerepkör alapján szeretné hitelesíteni a műveletet, ezt a paraméterek köztes szoftverrel történő átadásával teheti meg.
Az általunk készített köztes szoftver a következő függvényt tartalmazza, és az argumentum után egyéni argumentumokat is átadhatunk $következő .
public function handle($request, Closure $next)
{
return $next($request);
}
Most próbáljuk meg beállítani a szerepkör paramétert egy új köztes szoftverre, amelyet a semmiből fogunk létrehozni, majd folytassuk a Role Middleware létrehozását a következő parancs futtatásával
Módosítsa a fogantyú módszerét az alábbiak szerint
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) {
echo "Role: ".$role;
return $next($request);
}
}
hozzáadtuk a paramétert $role
, a metóduson belül pedig a vonal echo
hogy a kimenetbe írja be a szerep nevét.
Most regisztráljuk a RoleMiddleware köztes szoftvert egy adott útvonalhoz
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'Age' => \App\Http\Middleware\CheckAge::class,
'Role' => \App\Http\Middleware\RoleMiddleware::class,
];
Most, hogy teszteljük a köztes szoftvert a paraméterrel, létre kell hoznunk egy kérést és egy választ. A válasz szimulálásához hozzuk létre a vezérlőt, amelyet TestControllernek fogunk hívni
php artisan make:controller TestController --plain
az éppen végrehajtott parancs egy új vezérlőt hoz létre a mappában app/Http/TestController.php
, és módosítsa a módszert index
a vonallal echo "<br>Test Controller.";
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class TestController extends Controller {
public function index() {
echo "<br>Test Controller.";
}
}
A válasz beállítása után a fájl szerkesztésével felépítjük a kérést routes.php
hozzáadásával a route role
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
ezen a ponton kipróbálhatjuk a példát az URL meglátogatásával http://localhost:8000/role
a böngészőben pedig a kettőt fogjuk látni echo
Role editor
Test Controller
Il terminable Middleware
végrehajt bizonyos feladatokat, miután a választ elküldte a böngészőnek. Ezt a módszerrel köztes szoftver létrehozásával érhetjük el fejezze be a köztes szoftverben. Il terminable Middleware
regisztrálni kell a middleware
globális. A módszer terminate
két érvet fog kapni $kérelem e $válasz.
A módszer Terminate
a következő kódban látható módon kell létrehozni.
php artisan make:middleware TerminateMiddleware
Ha elkészült a köztes szoftver app/Http/Middleware/TerminateMiddleware.php
módosítsuk a kódot az alábbiak szerint
<?php
namespace App\Http\Middleware;
use Closure;
class TerminateMiddleware {
public function handle($request, Closure $next) {
echo "Executing statements of handle method of TerminateMiddleware.";
return $next($request);
}
public function terminate($request, $response) {
echo "<br>Executing statements of terminate method of TerminateMiddleware.";
}
}
ebben az esetben van egy módszerünk handle
és egy módszer terminate
a két paraméterrel $request
e $response
.
Most regisztráljuk a Middleware-t
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'Age' => \App\Http\Middleware\CheckAge::class,
'Role' => \App\Http\Middleware\RoleMiddleware::class,
'terminate' => \App\Http\Middleware\TerminateMiddleware::class,
];
Most létre kell hoznunk a vezérlőt a válasz szimulálásához
php artisan make:controller XYZController --plain
az osztály tartalmának módosítása
class XYZController extends Controller {
public function index() {
echo "<br>XYZ Controller.";
}
}
Most szerkesztenünk kell a fájlt routes/web.php
a kérés aktiválásához szükséges útvonalak hozzáadása
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'XYZController@index',
]);
ezen a ponton kipróbálhatjuk a példát az URL meglátogatásával http://localhost:8000/terminate
és a böngészőben a következő sorokat fogjuk látni
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
Ön is tetszik:
A finom motoros készségek színezéssel történő fejlesztése felkészíti a gyerekeket olyan összetettebb készségekre, mint az írás. Kiszínezni…
A haditengerészeti szektor igazi világgazdasági hatalom, amely egy 150 milliárdos piac felé navigált...
Múlt hétfőn a Financial Times bejelentette, hogy megállapodást köt az OpenAI-val. Az FT engedélyezi világszínvonalú újságírását…
Emberek milliói fizetnek a streaming szolgáltatásokért, havi előfizetési díjat fizetve. Általános vélemény, hogy Ön…