Dan ifisser li meta l-utent (vista Laravel) jagħmel talba lis-server (kontrollur Laravel), it-talba tgħaddi mill-middleware. B'dan il-mod il-middleware jista' jiċċekkja jekk it-talba hijiex awtentikata jew le:
Laravel jippermettilek defitlesti u uża middleware addizzjonali biex twettaq varjetà ta 'kompiti ħlief l-awtentikazzjoni.
Middlewares Laravel, bħall-awtentikazzjoni u l-protezzjoni CSRF, jinsabu fid-direttorju app/Http/Middleware .
Nistgħu għalhekk ngħidu li l-middleware huwa filtru ta 'talba http, li permezz tiegħu huwa possibbli li jiġu vverifikati l-kundizzjonijiet u jitwettqu azzjonijiet.
Biex noħolqu middleware ġdid aħna nħaddmu l-kmand li ġej:
php artisan make:middleware <name-of-middleware>
Noħolqu l- middleware
u nsejħulha CheckAge
, artisan
se jwieġbuna kif ġej:
It-tieqa ta 'hawn fuq turi li l-middleware inħoloq b'suċċess bl-isem " CheckAge ".
Biex tara jekk il-middleware CheckAge jinħoloqx jew le, mur fil-proġett fil-folder app/Http/Middleware, u tara l-fajl li għadu kif inħoloq
Il-fajl maħluq ġdid għandu l-kodiċi li ġej
<?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);
}
}
Biex nużaw middleware, għandna bżonn nirreġistrawh.
Hemm żewġ tipi ta 'middleware f'Laravel:
Middleware globale
Route Middleware
Il middleware globali se jiġi eżegwit fuq kull talba HTTP mill-applikazzjoni, filwaqt li l- Rotta Middleware se jiġu assenjati għal mogħdija speċifika. Middleware jista' jiġi rreġistrat fuq app/Http/Kernel.php. Dan il-fajl fih żewġ proprjetajiet $middleware e $routeMiddleware . Il-proprjetà $ middleware jintuża biex jirreġistra middleware u sjieda globali $routeMiddleware jintuża biex jirreġistra middleware speċifiku għar-rotta.
Biex tirreġistra middleware globali, elenka l-klassi fl-aħħar tal-proprjetà $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,
];
Biex tirreġistra middleware speċifiku għar-rotta, żid iċ-ċavetta u l-valur mal-proprjetà $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,
];
Ħloqna CheckAge fl-eżempju preċedenti. Issa nistgħu nirreġistraw dan fil-proprjetà tar-rotta tal-middleware. Il-kodiċi għal tali reġistrazzjoni jidher hawn taħ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,
];
Nistgħu wkoll ngħaddu parametri ma 'Middleware.
Pereżempju, jekk l-applikazzjoni tiegħek għandha rwoli differenti bħal utent, admin, super admin eċċ. u trid tivverifika l-azzjoni bbażata fuq ir-rwol, tista 'tagħmel dan billi tgħaddi l-parametri mal-middleware.
Il-middleware li ħloqna fih il-funzjoni li ġejja, u nistgħu ngħaddu argumenti personalizzati wara l-argument $li jmiss .
public function handle($request, Closure $next)
{
return $next($request);
}
Issa ejja nippruvaw nissettjaw il-parametru tar-rwol għal middleware ġdid li se noħolqu mill-bidu nett, imbagħad ipproċedi biex noħolqu Role Middleware billi tħaddem il-kmand li ġej
Immodifika l-metodu tal-manku kif ġej
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) {
echo "Role: ".$role;
return $next($request);
}
}
żidna l-parametru $role
, u ġewwa l-metodu l-linja echo
biex tikteb l-output l-isem tar-rwol.
Issa ejja nirreġistraw il-middleware RoleMiddleware għal mogħdija speċifika
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,
];
Issa biex nittestjaw il-middleware bil-parametru, irridu noħolqu talba u tweġiba. Biex tissimula r-rispons ejja noħolqu l-kontrollur li se nsejħu TestController
php artisan make:controller TestController --plain
il-kmand li għadu kemm ġie esegwit se joħloq kontrollur ġdid ġewwa l-folder app/Http/TestController.php
, u ibdel il-metodu index
mal-linja 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.";
}
}
Wara li waqqaf ir-rispons, nibnu t-talba billi neditjaw il-fajl routes.php
billi żżid il- route role
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
f'dan il-punt nistgħu nippruvaw l-eżempju billi nżuru l-URL http://localhost:8000/role
u fil-browser naraw it-tnejn echo
Role editor
Test Controller
Il terminable Middleware
iwettaq xi kompiti wara li r-rispons jintbagħat lill-browser. Dan jista 'jinkiseb billi jinħoloq middleware bil-metodu ittemm fil-middleware. Il terminable Middleware
għandhom ikunu reġistrati mal- middleware
globali. Il-metodu terminate
se jirċievi żewġ argumenti $talba e $risposta.
Il-metodu Terminate
trid tinħoloq kif muri fil-kodiċi li ġej.
php artisan make:middleware TerminateMiddleware
Ladarba jinħoloq il-middleware app/Http/Middleware/TerminateMiddleware.php
ejja timmodifika l-kodiċi kif ġej
<?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.";
}
}
f'dan il-każ għandna metodu handle
u metodu terminate
maż-żewġ parametri $request
e $response
.
Issa ejja nirreġistraw il-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,
];
Issa għandna bżonn noħolqu l-kontrollur biex jissimulaw ir-rispons
php artisan make:controller XYZController --plain
jimmodifika l-kontenut tal-klassi
class XYZController extends Controller {
public function index() {
echo "<br>XYZ Controller.";
}
}
Issa għandna bżonn neditjaw il-fajl routes/web.php
iż-żieda tar-rotot meħtieġa biex tiġi attivata t-talba
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'XYZController@index',
]);
f'dan il-punt nistgħu nippruvaw l-eżempju billi nżuru l-URL http://localhost:8000/terminate
u fil-browser naraw il-linji li ġejjin
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
Jista 'jkun li tixtieq ukoll:
Coveware minn Veeam se jkompli jipprovdi servizzi ta' rispons għal inċidenti ta' estorsjoni ċibernetika. Coveware se joffri forensiċi u kapaċitajiet ta' rimedju...
Il-manutenzjoni ta’ tbassir qed tirrivoluzzjona s-settur taż-żejt u l-gass, b’approċċ innovattiv u proattiv għall-ġestjoni tal-impjant...
Is-CMA tar-Renju Unit ħarġet twissija dwar l-imġieba ta 'Big Tech fis-suq tal-intelliġenza artifiċjali. Hemm…
Id-Digriet "Case Green", ifformulat mill-Unjoni Ewropea biex itejjeb l-effiċjenza enerġetika tal-bini, ikkonkluda l-proċess leġiżlattiv tiegħu bi...