Kjo do të thotë që kur përdoruesi (pamja Laravel) i bën një kërkesë serverit (kontrolluesi Laravel), kërkesa do të kalojë përmes programit të mesëm. Në këtë mënyrë, softueri i mesëm mund të kontrollojë nëse kërkesa është vërtetuar apo jo:
Laravel ju lejon defipërfundoni dhe përdorni programe të mesme shtesë për të kryer një sërë detyrash, përveç vërtetimit.
Programet e mesme Laravel, të tilla si vërtetimi dhe mbrojtja CSRF, janë të vendosura në drejtori aplikacion/Http/Middleware .
Prandaj mund të themi se softueri i mesëm është një filtër i kërkesës http, përmes të cilit është e mundur të verifikohen kushtet dhe të kryhen veprime.
Për të krijuar një softuer të ri, ne ekzekutojmë komandën e mëposhtme:
php artisan make:middleware <name-of-middleware>
Ne krijojmë middleware
dhe ne e quajmë atë CheckAge
, artisan
do të na përgjigjet si më poshtë:
Dritarja e mësipërme tregon se programi i mesëm është krijuar me sukses me emrin " Mosha e Kontrollit ".
Për të parë nëse programi i ndërmjetëm CheckAge është krijuar apo jo, shkoni te projekti në dosjen app/Http/Middleware dhe do të shihni skedarin e krijuar rishtazi.
Skedari i krijuar rishtazi ka kodin e mëposhtëm
<?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);
}
}
Për të përdorur programin e mesëm, duhet ta regjistrojmë atë.
Ekzistojnë dy lloje të programeve të mesme në Laravel:
Middleware globale
Route Middleware
Il softuer i mesëm global do të ekzekutohet në çdo kërkesë HTTP nga aplikacioni, ndërsa Route Middleware do të caktohet në një rrugë specifike. Middleware mund të regjistrohet në app/Http/Kernel.php. Ky skedar përmban dy veti $middleware e $routeMiddleware . Vetia $middleware përdoret për të regjistruar softuerin dhe pronësinë globale $routeMiddleware përdoret për të regjistruar softuerin e mesëm specifik të rrugës.
Për të regjistruar softuerin global të mesëm, renditni klasën në fund të veçorisë $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,
];
Për të regjistruar softuerin e mesëm specifik të rrugës, shtoni çelësin dhe vlerën në vetinë $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,
];
Ne krijuam Mosha e Kontrollit në shembullin e mëparshëm. Tani mund ta regjistrojmë këtë në pronën e rrugës së ndërmjetme. Kodi për një regjistrim të tillë tregohet më poshtë.
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,
];
Mund të kalojmë edhe parametra me Middleware.
Për shembull, nëse aplikacioni juaj ka role të ndryshme si përdorues, administrator, super administrator etj. dhe dëshironi të vërtetoni veprimin në bazë të rolit, mund ta bëni duke kaluar parametrat me programin e mesëm.
Softueri i mesëm që krijuam përmban funksionin e mëposhtëm, dhe ne mund të kalojmë argumente të personalizuara pas argumentit $ tjetër .
public function handle($request, Closure $next)
{
return $next($request);
}
Tani le të përpiqemi të vendosim parametrin e rolit në një program të ri të mesëm që do të krijojmë nga e para, më pas të vazhdojmë të krijojmë Role Middleware duke ekzekutuar komandën e mëposhtme
Ndryshoni metodën e dorezës si më poshtë
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) {
echo "Role: ".$role;
return $next($request);
}
}
kemi shtuar parametrin $role
, dhe brenda metodës vijën echo
për të shkruar në dalje emrin e rolit.
Tani le të regjistrojmë programin ndërmjetës RoleMiddleware për një rrugë specifike
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,
];
Tani për të testuar programin e mesëm me parametrin, duhet të krijojmë një kërkesë dhe një përgjigje. Për të simuluar përgjigjen, le të krijojmë kontrolluesin që do ta quajmë TestController
php artisan make:controller TestController --plain
komanda e sapo ekzekutuar do të krijojë një kontrollues të ri brenda dosjes app/Http/TestController.php
, dhe ndryshoni metodën index
me linjën 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.";
}
}
Pas konfigurimit të përgjigjes, ne ndërtojmë kërkesën duke redaktuar skedarin routes.php
duke shtuar route role
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
në këtë pikë mund të provojmë shembullin duke vizituar URL-në http://localhost:8000/role
dhe në shfletues do t'i shohim të dy echo
Role editor
Test Controller
Il terminable Middleware
kryen disa detyra pasi përgjigja dërgohet në shfletues. Kjo mund të arrihet duke krijuar një program ndërmjetës me metodën përfundon në programin e mesëm. Il terminable Middleware
duhet të regjistrohen me middleware
globale. Metoda terminate
do të marrë dy argumente $kërkesë e $përgjigje.
Metoda Terminate
duhet të krijohet siç tregohet në kodin e mëposhtëm.
php artisan make:middleware TerminateMiddleware
Pasi të krijohet softueri i mesëm app/Http/Middleware/TerminateMiddleware.php
le të modifikojmë kodin si më poshtë
<?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.";
}
}
në këtë rast kemi një metodë handle
dhe një metodë terminate
me dy parametrat $request
e $response
.
Tani le të regjistrojmë 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,
];
Tani duhet të krijojmë kontrolluesin për të simuluar përgjigjen
php artisan make:controller XYZController --plain
duke modifikuar përmbajtjen e klasës
class XYZController extends Controller {
public function index() {
echo "<br>XYZ Controller.";
}
}
Tani duhet të modifikojmë skedarin routes/web.php
duke shtuar rrugët e nevojshme për të aktivizuar kërkesën
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'XYZController@index',
]);
në këtë pikë mund të provojmë shembullin duke vizituar URL-në http://localhost:8000/terminate
dhe në shfletues do të shohim rreshtat e mëposhtëm
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
Ju gjithashtu mund të dëshironi:
Një operacion oftalmoplastik duke përdorur shikuesin komercial Apple Vision Pro u krye në Poliklinikën Catania…
Zhvillimi i aftësive të shkëlqyera motorike përmes ngjyrosjes i përgatit fëmijët për aftësi më komplekse si shkrimi. Për të ngjyrosur…
Sektori detar është një fuqi e vërtetë ekonomike globale, e cila ka lundruar drejt një tregu prej 150 miliardë...
Të hënën e kaluar, Financial Times njoftoi një marrëveshje me OpenAI. FT licencon gazetarinë e saj të klasit botëror…