Tai reiškia, kad kai vartotojas (Laravel vaizdas) pateikia užklausą serveriui (Laravel valdikliui), užklausa bus perduodama per tarpinę programinę įrangą. Tokiu būdu tarpinė programinė įranga gali patikrinti, ar užklausa autentifikuota, ar ne:
Laravel leidžia jums defiužbaigti ir naudoti papildomą tarpinę programinę įrangą įvairioms užduotims atlikti, išskyrus autentifikavimą.
„Laravel“ tarpinės programinės įrangos, tokios kaip autentifikavimas ir CSRF apsauga, yra kataloge app/Http/Middleware .
Todėl galime sakyti, kad tarpinė programinė įranga yra http užklausos filtras, per kurį galima patikrinti sąlygas ir atlikti veiksmus.
Norėdami sukurti naują tarpinę programinę įrangą, vykdome šią komandą:
php artisan make:middleware <name-of-middleware>
Mes kuriame middleware
ir mes tai vadiname CheckAge
, artisan
mums atsakys taip:
Aukščiau pateiktame lange rodoma, kad tarpinė programinė įranga buvo sėkmingai sukurta pavadinimu " Patikrinkite amžių ".
Norėdami sužinoti, ar tarpinė programinė įranga yra sukurta, ar ne, eikite į projektą aplanke programėlė/Http/Middleware ir pamatysite naujai sukurtą failą.
Naujai sukurtame faile yra toks kodas
<?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);
}
}
Norėdami naudoti tarpinę programinę įrangą, turime ją užregistruoti.
„Laravel“ yra dviejų tipų tarpinė programinė įranga:
Middleware globale
Route Middleware
Il pasaulinė tarpinė programinė įranga bus vykdoma kiekvienai HTTP užklausai iš programos, o Maršruto tarpinė programinė įranga bus priskirtas konkrečiam keliui. Tarpinę programinę įrangą galima registruoti adresu app/Http/Kernel.php. Šiame faile yra dvi ypatybės $tarpinės programos e $routeMiddleware . $middleware nuosavybė naudojamas registruoti pasaulinę tarpinę programinę įrangą ir nuosavybės teisę $routeMiddleware naudojamas registruoti specifinę maršruto tarpinę programinę įrangą.
Norėdami užregistruoti visuotinę tarpinę programinę įrangą, nurodykite klasę ypatybės $middleware pabaigoje.
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,
];
Norėdami užregistruoti specifinę maršruto tarpinę programinę įrangą, pridėkite raktą ir reikšmę prie $routeMiddleware nuosavybės.
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,
];
Mes sukūrėme Patikrinkite amžių ankstesniame pavyzdyje. Dabar galime tai užregistruoti tarpinės programinės įrangos maršruto nuosavybėje. Tokios registracijos kodas parodytas žemiau.
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,
];
Taip pat galime perduoti parametrus su Middleware.
Pavyzdžiui, jei jūsų programa turi skirtingus vaidmenis, pvz., naudotojo, administratoriaus, vyriausiojo administratoriaus ir kt. ir norite autentifikuoti veiksmą pagal vaidmenį, galite tai padaryti perduodami parametrus su tarpine programine įranga.
Mūsų sukurtoje tarpinėje programinėje įrangoje yra ši funkcija, o po argumento galime perduoti pasirinktinius argumentus $kitas .
public function handle($request, Closure $next)
{
return $next($request);
}
Dabar pabandykime nustatyti vaidmens parametrą naujai tarpinei programinei įrangai, kurią ketiname sukurti nuo nulio, tada pereikite prie vaidmens tarpinės programinės įrangos kūrimo vykdydami šią komandą
Pakeiskite rankenos metodą taip
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) {
echo "Role: ".$role;
return $next($request);
}
}
pridėjome parametrą $role
o metodo viduje linija echo
norėdami parašyti išvestį vaidmens pavadinimą.
Dabar užregistruokime „RoleMiddleware“ tarpinę programinę įrangą konkrečiam keliui
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,
];
Dabar norėdami išbandyti tarpinę programinę įrangą su parametru, turime sukurti užklausą ir atsakymą. Norėdami imituoti atsakymą, sukurkime valdiklį, kurį vadinsime TestController
php artisan make:controller TestController --plain
ką tik įvykdyta komanda aplanke sukurs naują valdiklį app/Http/TestController.php
ir pakeiskite metodą index
su linija 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.";
}
}
Nustačius atsakymą, užklausą sudarome redaguodami failą routes.php
pridedant route role
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
šiuo metu galime išbandyti pavyzdį apsilankę URL http://localhost:8000/role
o naršyklėje matysime du echo
Role editor
Test Controller
Il terminable Middleware
atlieka kai kurias užduotis po to, kai atsakymas išsiunčiamas į naršyklę. Tai galima pasiekti naudojant šį metodą sukuriant tarpinę programinę įrangą baigti tarpinėje programinėje įrangoje. Il terminable Middleware
turi būti registruotas middleware
globalus. Metodas terminate
gaus du argumentus $ užklausa e $atsakymas.
Metodas Terminate
turi būti sukurtas, kaip parodyta šiame kode.
php artisan make:middleware TerminateMiddleware
Kai bus sukurta tarpinė programinė įranga app/Http/Middleware/TerminateMiddleware.php
pakeiskime kodą taip
<?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.";
}
}
šiuo atveju turime metodą handle
ir metodas terminate
su dviem parametrais $request
e $response
.
Dabar užregistruokime tarpinę programinę įrangą
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,
];
Dabar turime sukurti valdiklį, kad imituotume atsakymą
php artisan make:controller XYZController --plain
keičiant klasės turinį
class XYZController extends Controller {
public function index() {
echo "<br>XYZ Controller.";
}
}
Dabar turime redaguoti failą routes/web.php
pridedant maršrutus, reikalingus užklausai suaktyvinti
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'XYZController@index',
]);
šiuo metu galime išbandyti pavyzdį apsilankę URL http://localhost:8000/terminate
o naršyklėje matysime tokias eilutes
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
Jums taip pat gali patikti:
„Coveware by Veeam“ ir toliau teiks reagavimo į kibernetinio turto prievartavimo incidentus paslaugas. „Coveware“ pasiūlys teismo ekspertizės ir ištaisymo galimybes…
Nuspėjama priežiūra keičia naftos ir dujų sektorių, taikant naujovišką ir iniciatyvų požiūrį į gamyklų valdymą.…
JK CMA paskelbė įspėjimą dėl Big Tech elgesio dirbtinio intelekto rinkoje. Ten…
„Žaliųjų namų“ dekretas, kurį Europos Sąjunga suformulavo siekiant padidinti pastatų energijos vartojimo efektyvumą, baigė teisėkūros procesą su…