See tähendab, et kui kasutaja (Laraveli vaade) teeb päringu serverile (Laraveli kontroller), läheb päring läbi vahevara. Nii saab vahevara kontrollida, kas päring on autentitud või mitte:
Laravel lubab teil seda teha defilõpetage ja kasutage täiendavat vahevara mitmesuguste toimingute tegemiseks, välja arvatud autentimine.
Laraveli vahevara, nagu autentimine ja CSRF-kaitse, asuvad kataloogis rakendus/Http/Middleware .
Seega võime öelda, et vahevara on http päringu filter, mille kaudu on võimalik tingimusi kontrollida ja toiminguid teha.
Uue vahevara loomiseks käivitame järgmise käsu:
php artisan make:middleware <name-of-middleware>
Me loome middleware
ja me kutsume seda CheckAge
, artisan
vastab meile järgmiselt:
Ülaltoodud aken näitab, et vahevara on edukalt loodud nimega " Kontrolli vanust ".
Et näha, kas CheckAge'i vahevara on loodud või mitte, minge projekti juurde kaustas app/Http/Middleware ja näete vastloodud faili
Uuel failil on järgmine kood
<?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);
}
}
Vahevara kasutamiseks peame selle registreerima.
Laravelis on kahte tüüpi vahevara:
Middleware globale
Route Middleware
Il globaalne vahevara käivitatakse iga rakenduse HTTP-päringu korral, samal ajal kui Marsruudi vahevara määratakse kindlale teele. Vahevara saab registreerida aadressil app/Http/Kernel.php. See fail sisaldab kahte atribuuti $vahevara e $routeMiddleware . $middleware atribuut kasutatakse ülemaailmse vahevara ja omandiõiguse registreerimiseks $routeMiddleware kasutatakse marsruudipõhise vahevara registreerimiseks.
Globaalse vahevara registreerimiseks loetlege klass atribuudi $middleware lõpus.
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,
];
Marsruudipõhise vahevara registreerimiseks lisage võti ja väärtus atribuudile $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,
];
Meie lõime Kontrolli vanust eelmises näites. Nüüd saame selle registreerida vahevara marsruudi atribuudis. Sellise registreerimise kood on näidatud allpool.
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,
];
Saame parameetreid edastada ka vahevaraga.
Näiteks kui teie rakendusel on erinevad rollid, nagu kasutaja, administraator, superadministraator jne. ja soovite toimingut rolli alusel autentida, saate seda teha vahevaraga parameetrite edastamisega.
Meie loodud vahevara sisaldab järgmist funktsiooni ja argumendi järel saame edastada kohandatud argumendid $järgmine .
public function handle($request, Closure $next)
{
return $next($request);
}
Nüüd proovime määrata rolli parameetri uuele vahevarale, mille hakkame nullist looma, seejärel jätkake rolli vahevara loomist, käivitades järgmise käsu
Muutke käepideme meetodit järgmiselt
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) {
echo "Role: ".$role;
return $next($request);
}
}
lisasime parameetri $role
ja meetodi sees rida echo
et kirjutada väljundisse rolli nimi.
Nüüd registreerime RoleMiddleware vahevara konkreetse tee jaoks
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,
];
Nüüd, et testida vahevara parameetriga, peame looma päringu ja vastuse. Vastuse simuleerimiseks loome kontrolleri, mida kutsume TestControlleriks
php artisan make:controller TestController --plain
äsja käivitatud käsk loob kaustas uue kontrolleri app/Http/TestController.php
ja muutke meetodit index
joonega 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.";
}
}
Pärast vastuse seadistamist koostame päringu faili redigeerimise teel routes.php
lisades route role
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
siinkohal saame näidet proovida, külastades URL-i http://localhost:8000/role
ja brauseris näeme neid kahte echo
Role editor
Test Controller
Il terminable Middleware
täidab mõned toimingud pärast vastuse saatmist brauserisse. Seda saab saavutada meetodiga vahevara loomisega lõpetada vahevaras. Il terminable Middleware
tuleb registreerida middleware
globaalne. Meetod terminate
saab kaks argumenti $taotlus e $vastus.
Meetod Terminate
tuleb luua, nagu on näidatud järgmises koodis.
php artisan make:middleware TerminateMiddleware
Kui vahevara on loodud app/Http/Middleware/TerminateMiddleware.php
muudame koodi järgmiselt
<?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.";
}
}
sel juhul on meil meetod handle
ja meetod terminate
kahe parameetriga $request
e $response
.
Nüüd registreerime vahevara
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,
];
Nüüd peame vastuse simuleerimiseks looma kontrolleri
php artisan make:controller XYZController --plain
klassi sisu muutmine
class XYZController extends Controller {
public function index() {
echo "<br>XYZ Controller.";
}
}
Nüüd peame faili redigeerima routes/web.php
päringu aktiveerimiseks vajalike marsruutide lisamine
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'XYZController@index',
]);
siinkohal saame näidet proovida, külastades URL-i http://localhost:8000/terminate
ja brauseris näeme järgmisi ridu
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
Teile võiksid meeldida ka:
Mõiste Smart Lock Market viitab tootmist, levitamist ja kasutamist ümbritsevale tööstusele ja ökosüsteemile…
Tarkvaratehnikas on disainimustrid optimaalsed lahendused probleemidele, mis tarkvara kujundamisel tavaliselt esinevad. Ma olen nagu…
Tööstuslik märgistus on lai mõiste, mis hõlmab mitmeid tehnikaid, mida kasutatakse püsivate märkide loomiseks ...
Järgmised lihtsad Exceli makronäited on kirjutatud VBA-ga hinnanguline lugemisaeg: 3 minutit Näide…