Dit beteken dat wanneer die gebruiker (Laravel-aansig) 'n versoek aan die bediener (Laravel-beheerder) rig, die versoek deur die middelware sal gaan. Op hierdie manier kan die middelware kyk of die versoek geverifieer is of nie:
Laravel laat jou toe defivoltooi en gebruik bykomende middelware om 'n verskeidenheid take uit te voer behalwe verifikasie.
Laravel-middelware, soos verifikasie en CSRF-beskerming, is in die gids geleë app/Http/Middleware .
Ons kan dus sê dat die middelware 'n http-versoekfilter is, waardeur dit moontlik is om toestande te verifieer en aksies uit te voer.
Om 'n nuwe middelware te skep, voer ons die volgende opdrag uit:
php artisan make:middleware <name-of-middleware>
Ons skep die middleware
en ons noem dit CheckAge
, artisan
sal ons soos volg antwoord:
Die venster hierbo wys dat die middelware suksesvol geskep is met die naam " Kontrole Ouderdom ".
Om te sien of die CheckAge-middelware geskep is of nie, gaan na die projek in die toepassing/Http/Middleware-lêergids, en jy sal die nuutgeskepte lêer sien
Die nuutgeskepte lêer het die volgende kode
<?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);
}
}
Om middelware te gebruik, moet ons dit registreer.
Daar is twee tipes middelware in Laravel:
Middleware globale
Route Middleware
Il globale middelware sal op elke HTTP-versoek van die toepassing uitgevoer word, terwyl die Roete Middleware sal aan 'n spesifieke pad toegewys word. Middelware kan geregistreer word by app/Http/Kernel.php. Hierdie lêer bevat twee eienskappe $middelware e $routeMiddleware . Die $middelware eiendom word gebruik om globale middelware en eienaarskap te registreer $routeMiddleware word gebruik om roetespesifieke middelware te registreer.
Om globale middelware te registreer, lys die klas aan die einde van die $middelware-eienskap.
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,
];
Om roetespesifieke middelware te registreer, voeg die sleutel en waarde by die $routeMiddleware-eienskap.
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,
];
Ons het geskep Kontrole Ouderdom in die vorige voorbeeld. Ons kan dit nou in die middelware-roete-eiendom registreer. Die kode vir so 'n registrasie word hieronder getoon.
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,
];
Ons kan ook parameters met Middleware deurgee.
Byvoorbeeld, as jou toepassing verskillende rolle het soos gebruiker, admin, super admin ens. en jy wil die aksie verifieer op grond van die rol, jy kan dit doen deur die parameters met die middelware deur te gee.
Die middelware wat ons geskep het, bevat die volgende funksie, en ons kan pasgemaakte argumente na die argument deurgee $volgende .
public function handle($request, Closure $next)
{
return $next($request);
}
Kom ons probeer nou om die rolparameter op 'n nuwe middelware te stel wat ons van nuuts af gaan skep, en gaan dan voort om Rolmiddelware te skep deur die volgende opdrag uit te voer
Verander die hanteermetode soos volg
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) {
echo "Role: ".$role;
return $next($request);
}
}
ons het die parameter bygevoeg $role
, en binne die metode die lyn echo
om die uitvoer die naam van die rol te skryf.
Kom ons registreer nou die RoleMiddleware-middelware vir 'n spesifieke pad
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,
];
Om nou die middelware met die parameter te toets, moet ons 'n versoek en 'n antwoord skep. Om die reaksie te simuleer, laat ons die kontroleerder skep wat ons TestController sal noem
php artisan make:controller TestController --plain
die opdrag wat sopas uitgevoer is, sal 'n nuwe kontroleerder in die gids skep app/Http/TestController.php
, en verander die metode index
met die lyn 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.";
}
}
Nadat ons die antwoord opgestel het, bou ons die versoek deur die lêer te wysig routes.php
deur die by te voeg route role
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
op hierdie punt kan ons die voorbeeld probeer deur die URL te besoek http://localhost:8000/role
en in die blaaier sal ons die twee sien echo
Role editor
Test Controller
Il terminable Middleware
voer sommige take uit nadat die antwoord na die blaaier gestuur is. Dit kan bereik word deur 'n middelware met die metode te skep eindig in die middelware. Il terminable Middleware
moet geregistreer wees by die middleware
wêreldwyd. Die metode terminate
sal twee argumente ontvang $versoek e $reaksie.
Die metode Terminate
moet geskep word soos aangedui in die volgende kode.
php artisan make:middleware TerminateMiddleware
Sodra die middelware geskep is app/Http/Middleware/TerminateMiddleware.php
kom ons verander die kode soos volg
<?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.";
}
}
in hierdie geval het ons 'n metode handle
en 'n metode terminate
met die twee parameters $request
e $response
.
Kom ons registreer nou die middelware
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,
];
Nou moet ons die kontroleerder skep om die reaksie te simuleer
php artisan make:controller XYZController --plain
wysiging van die inhoud van die klas
class XYZController extends Controller {
public function index() {
echo "<br>XYZ Controller.";
}
}
Nou moet ons die lêer wysig routes/web.php
die byvoeging van die roetes wat nodig is om die versoek te aktiveer
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'XYZController@index',
]);
op hierdie punt kan ons die voorbeeld probeer deur die URL te besoek http://localhost:8000/terminate
en in die blaaier sal ons die volgende reëls sien
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
Miskien hou u ook van:
Die vlootsektor is 'n ware globale ekonomiese moondheid, wat na 'n 150 miljard-mark navigeer het ...
Verlede Maandag het die Financial Times 'n ooreenkoms met OpenAI aangekondig. FT lisensieer sy wêreldklas-joernalistiek ...
Miljoene mense betaal vir stromingsdienste en betaal maandelikse intekengeld. Dit is algemene opinie dat jy...
Coveware deur Veeam sal voortgaan om reaksiedienste vir kuberafpersingsvoorvalle te verskaf. Coveware sal forensiese en remediëringsvermoëns bied ...