To znači da kada korisnik (Laravel pogled) uputi zahtjev serveru (Laravel kontroler), zahtjev će proći kroz međuopremu. Na ovaj način srednji softver može provjeriti je li zahtjev autentificiran ili ne:
Laravel vam to omogućava defiuključite i koristite dodatni međuverski softver za obavljanje raznih zadataka osim provjere autentičnosti.
Laravel međuprogrami, kao što su autentikacija i CSRF zaštita, nalaze se u direktoriju app/Http/Middleware .
Stoga možemo reći da je međuvera filter http zahtjeva, preko kojeg je moguće provjeriti uvjete i izvršiti radnje.
Za kreiranje novog međuvera pokrećemo sljedeću naredbu:
php artisan make:middleware <name-of-middleware>
Mi kreiramo middleware
i mi to zovemo CheckAge
, artisan
će nam odgovoriti na sljedeći način:
Prozor iznad pokazuje da je srednji softver uspješno kreiran sa imenom ” CheckAge ".
Da vidite da li je međuvera CheckAge kreirana ili ne, idite na projekat u folderu app/Http/Middleware i vidjet ćete novokreiranu datoteku
Novokreirana datoteka ima sljedeći kod
<?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);
}
}
Da bismo koristili srednji softver, moramo ga registrirati.
Postoje dvije vrste međuvera u Laravelu:
Middleware globale
Route Middleware
Il globalni srednji softver će se izvršiti na svakom HTTP zahtjevu iz aplikacije, dok će se Route Middleware će biti dodijeljen određenoj putanji. Middleware se može registrovati na app/Http/Kernel.php. Ova datoteka sadrži dva svojstva $middleware e $routeMiddleware . Svojstvo $middleware koristi se za registraciju globalnog međuvera i vlasništva $routeMiddleware koristi se za registraciju srednjeg softvera specifičnog za rutu.
Za registraciju globalnog međuvera, navedite klasu na kraju svojstva $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,
];
Da biste registrirali međuopremu specifičnu za rutu, dodajte ključ i vrijednost svojstvu $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,
];
Stvorili smo CheckAge u prethodnom primjeru. Sada ovo možemo registrirati u svojstvu rute međuvera. Kod za takvu registraciju je prikazan ispod.
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,
];
Također možemo proslijediti parametre s Middleware-om.
Na primjer, ako vaša aplikacija ima različite uloge kao što su korisnik, administrator, super administrator itd. a želite da potvrdite autentičnost radnje na osnovu uloge, to možete učiniti tako što ćete proslijediti parametre s međuvera.
Međuover koji smo kreirali sadrži sljedeću funkciju i možemo proslijediti prilagođene argumente nakon argumenta $sljedeći .
public function handle($request, Closure $next)
{
return $next($request);
}
Pokušajmo sada postaviti parametar uloge na novi međuover koji ćemo kreirati od nule, a zatim nastavite sa kreiranjem međuvera uloge pokretanjem sljedeće naredbe
Modificirajte metodu ručke na sljedeći način
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) {
echo "Role: ".$role;
return $next($request);
}
}
dodali smo parametar $role
, a unutar metode linija echo
da napišete na izlazu ime uloge.
Sada registrirajmo RoleMiddleware middleware za određenu putanju
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,
];
Sada da bismo testirali srednji softver sa parametrom, moramo kreirati zahtjev i odgovor. Da bismo simulirali odgovor kreirajmo kontroler koji ćemo nazvati TestController
php artisan make:controller TestController --plain
upravo izvršena komanda će kreirati novi kontroler unutar fascikle app/Http/TestController.php
, i promijenite metodu index
sa linijom 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.";
}
}
Nakon postavljanja odgovora, gradimo zahtjev uređivanjem datoteke routes.php
dodavanjem route role
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
u ovom trenutku možemo isprobati primjer posjetom URL-u http://localhost:8000/role
a u pretraživaču ćemo vidjeti to dvoje echo
Role editor
Test Controller
Il terminable Middleware
obavlja neke zadatke nakon što se odgovor pošalje pretraživaču. Ovo se može postići kreiranjem međuvera sa metodom završiti u međuveru. Il terminable Middleware
moraju biti registrovani kod middleware
globalno. Metoda terminate
dobiće dva argumenta $request e $response.
Metoda Terminate
mora biti kreiran kao što je prikazano u sljedećem kodu.
php artisan make:middleware TerminateMiddleware
Jednom kada je srednji softver kreiran app/Http/Middleware/TerminateMiddleware.php
izmenimo kod na sledeći 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.";
}
}
u ovom slučaju imamo metodu handle
i metod terminate
sa dva parametra $request
e $response
.
Sada 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,
];
Sada moramo kreirati kontroler da simulira odgovor
php artisan make:controller XYZController --plain
modificiranje sadržaja klase
class XYZController extends Controller {
public function index() {
echo "<br>XYZ Controller.";
}
}
Sada moramo urediti fajl routes/web.php
dodavanje ruta potrebnih za aktiviranje zahtjeva
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'XYZController@index',
]);
u ovom trenutku možemo isprobati primjer posjetom URL-u http://localhost:8000/terminate
a u pretraživaču ćemo vidjeti sljedeće redove
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
Možda će vam se takođe svidjeti:
Coveware od strane Veeam-a će nastaviti da pruža usluge odgovora na incidente u slučaju sajber iznude. Coveware će ponuditi mogućnosti forenzike i sanacije…
Prediktivno održavanje revolucionira sektor nafte i plina, s inovativnim i proaktivnim pristupom upravljanju postrojenjima.…
UK CMA izdao je upozorenje o ponašanju Big Tech-a na tržištu umjetne inteligencije. Tamo…
Uredba o „zelenim kućama“, koju je formulisala Evropska unija za poboljšanje energetske efikasnosti zgrada, završila je svoj zakonodavni proces sa…