To pomeni, da ko uporabnik (pogled Laravel) pošlje zahtevo strežniku (krmilnik Laravel), gre zahteva skozi vmesno programsko opremo. Na ta način lahko vmesna programska oprema preveri, ali je zahteva overjena ali ne:
Laravel vam omogoča defidokončajte in uporabite dodatno vmesno programsko opremo za izvajanje različnih nalog razen preverjanja pristnosti.
Vmesna programska oprema Laravel, kot sta avtentikacija in zaščita CSRF, se nahaja v imeniku app/Http/Middleware .
Lahko torej rečemo, da je vmesna programska oprema http filter filter, preko katerega je mogoče preverjati pogoje in izvajati akcije.
Za ustvarjanje nove vmesne programske opreme zaženemo naslednji ukaz:
php artisan make:middleware <name-of-middleware>
Ustvarjamo middleware
in ga imenujemo CheckAge
, artisan
nam bo odgovoril takole:
Zgornje okno kaže, da je bila vmesna programska oprema uspešno ustvarjena z imenom ” CheckAge ".
Če želite preveriti, ali je vmesna programska oprema CheckAge ustvarjena ali ne, pojdite na projekt v mapi app/Http/Middleware in videli boste novo ustvarjeno datoteko
Novo ustvarjena datoteka ima naslednjo kodo
<?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);
}
}
Za uporabo vmesne programske opreme jo moramo registrirati.
V Laravel obstajata dve vrsti vmesne programske opreme:
Middleware globale
Route Middleware
Il globalna vmesna programska oprema bo izvedeno na vsako zahtevo HTTP iz aplikacije, medtem ko bo Vmesna programska oprema za usmerjanje bo dodeljen določeni poti. Vmesno programsko opremo lahko registrirate na app/Http/Kernel.php. Ta datoteka vsebuje dve lastnosti $vmesna programska oprema e $routeMiddleware . Lastnost $middleware se uporablja za registracijo globalne vmesne programske opreme in lastništva $routeMiddleware se uporablja za registracijo vmesne programske opreme, specifične za pot.
Če želite registrirati globalno vmesno programsko opremo, navedite razred na koncu lastnosti $middleware.
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,
];
Če želite registrirati vmesno programsko opremo, specifično za pot, dodajte ključ in vrednost v lastnost $routeMiddleware.
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,
];
Ustvarili smo CheckAge v prejšnjem primeru. Zdaj lahko to registriramo v lastnosti poti vmesne programske opreme. Koda za takšno registracijo je prikazana spodaj.
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,
];
Parametre lahko posredujemo tudi s programsko opremo Middleware.
Na primer, če ima vaša aplikacija različne vloge, kot so uporabnik, skrbnik, superskrbnik itd. in želite preveriti pristnost dejanja na podlagi vloge, lahko to storite tako, da posredujete parametre z vmesno programsko opremo.
Vmesna programska oprema, ki smo jo ustvarili, vsebuje naslednjo funkcijo in za argumentom lahko posredujemo argumente po meri $naslednji .
public function handle($request, Closure $next)
{
return $next($request);
}
Zdaj pa poskusimo nastaviti parameter vloge na novo vmesno programsko opremo, ki jo bomo ustvarili iz nič, nato pa nadaljujte z ustvarjanjem vmesne programske opreme z zagonom naslednjega ukaza
Spremenite način ročaja, kot sledi
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) {
echo "Role: ".$role;
return $next($request);
}
}
dodali smo parameter $role
, znotraj metode pa vrstica echo
da napišete izhod ime vloge.
Zdaj pa registrirajmo vmesno programsko opremo RoleMiddleware za določeno pot
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,
];
Zdaj, da preizkusimo vmesno programsko opremo s parametrom, moramo ustvariti zahtevo in odgovor. Za simulacijo odziva ustvarimo krmilnik, ki ga bomo imenovali TestController
php artisan make:controller TestController --plain
pravkar izveden ukaz bo ustvaril nov krmilnik znotraj mape app/Http/TestController.php
in spremenite način index
s črto 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.";
}
}
Po nastavitvi odgovora sestavimo zahtevo z urejanjem datoteke routes.php
z dodajanjem route role
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
na tej točki lahko preizkusimo primer tako, da obiščemo URL http://localhost:8000/role
in v brskalniku bomo videli oba echo
Role editor
Test Controller
Il terminable Middleware
izvede nekaj nalog, potem ko je odgovor poslan v brskalnik. To je mogoče doseči z ustvarjanjem vmesne programske opreme z metodo zaključijo v vmesni programski opremi. Il terminable Middleware
mora biti registriran pri middleware
globalno. Metoda terminate
bo prejel dva argumenta $request e $odziv.
Metoda Terminate
je treba ustvariti, kot je prikazano v naslednji kodi.
php artisan make:middleware TerminateMiddleware
Ko je vmesna programska oprema ustvarjena app/Http/Middleware/TerminateMiddleware.php
spremenimo kodo na naslednji način
<?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.";
}
}
v tem primeru imamo metodo handle
in metoda terminate
z obema parametroma $request
e $response
.
Zdaj pa registrirajmo Middleware
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,
];
Zdaj moramo ustvariti krmilnik za simulacijo odziva
php artisan make:controller XYZController --plain
spreminjanje vsebine razreda
class XYZController extends Controller {
public function index() {
echo "<br>XYZ Controller.";
}
}
Zdaj moramo urediti datoteko routes/web.php
dodajanje poti, potrebnih za aktiviranje zahteve
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'XYZController@index',
]);
na tej točki lahko preizkusimo primer tako, da obiščemo URL http://localhost:8000/terminate
in v brskalniku bomo videli naslednje vrstice
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
Morda vam bo všeč tudi:
Operacija oftalmoplastike s komercialnim pregledovalnikom Apple Vision Pro je bila opravljena na polikliniki Catania…
Razvijanje finih motoričnih spretnosti z barvanjem otroke pripravi na kompleksnejše spretnosti, kot je pisanje. Za barvanje…
Pomorski sektor je prava svetovna gospodarska sila, ki je krmarila proti 150 milijardnemu trgu...
Prejšnji ponedeljek je Financial Times objavil dogovor z OpenAI. FT licencira svoje vrhunsko novinarstvo ...