Lokhu kusho ukuthi uma umsebenzisi (ukubuka kwe-Laravel) enza isicelo kuseva (isilawuli se-Laravel), isicelo sizodlula ku-middleware. Ngale ndlela i-middleware ingabheka ukuthi isicelo siqinisekisiwe noma cha:
I-Laravel ikuvumela ukuba wenze kanjalo definire futhi usebenzise i-middleware eyengeziwe ukwenza imisebenzi eyahlukene ngaphandle kokuqinisekisa.
I-Laravel middlewares, njengokufakazela ubuqiniso nokuvikelwa kwe-CSRF, itholakala ohlwini lwemibhalo uhlelo lokusebenza/Http/Middleware .
Ngakho-ke singasho ukuthi i-middleware iyisihlungi sesicelo se-http, lapho kungenzeka khona ukuqinisekisa izimo nokwenza izenzo.
Ukwakha i-middleware entsha sisebenzisa umyalo olandelayo:
php artisan make:middleware <name-of-middleware>
Sakha i- middleware
futhi siyayibiza CheckAge
, artisan
uzosiphendula kanje:
Iwindi elingenhla libonisa ukuthi i-middleware idalwe ngempumelelo negama ” I-CheckAge ".
Ukuze ubone ukuthi i-middleware ye-CheckAge idaliwe noma cha, hamba kuphrojekthi kufolda yohlelo lokusebenza/Http/Middleware, futhi uzobona ifayela elisanda kwakhiwa.
Ifayela elisanda kwakhiwa linekhodi elandelayo
<?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);
}
}
Ukuze sisebenzise i-middleware, sidinga ukuyibhalisa.
Kunezinhlobo ezimbili ze-middleware e-Laravel:
Middleware globale
Route Middleware
Il global middleware izokwenziwa kuzo zonke izicelo ze-HTTP kusuka kuhlelo lokusebenza, ngenkathi i- Umzila Middleware izonikezwa indlela ethile. I-Middleware ingabhaliswa ku- app/Http/Kernel.php. Leli fayela liqukethe izici ezimbili $middleware e $RouteMiddleware . Impahla ye-$middleware isetshenziselwa ukubhalisa i-global middleware kanye nobunikazi $RouteMiddleware isetshenziselwa ukubhalisa i-middleware eqondene nomzila.
Ukuze ubhalise i-global middleware, faka ikilasi ohlwini ekugcineni kwempahla ye-$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,
];
Ukuze ubhalise i-middleware eqondene nomzila, engeza ukhiye kanye nenani esakhiweni se-$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,
];
Sakhile I-CheckAge esibonelweni sangaphambilini. Manje singabhalisa lokhu endaweni yomzila we-middleware. Ikhodi yokubhalisa okunjalo iboniswe ngezansi.
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,
];
Singakwazi futhi ukudlulisa amapharamitha nge-Middleware.
Isibonelo, uma uhlelo lwakho lokusebenza lunezindima ezihlukile ezifana nomsebenzisi, umlawuli, umphathi omkhulu njll. futhi ufuna ukugunyaza isenzo ngokusekelwe endimeni, ungakwenza ngokudlula amapharamitha nge-middleware.
I-middleware esiyidalile iqukethe umsebenzi olandelayo, futhi singadlulisa ama-agumenti ngokwezifiso ngemva kwengxabano $okulandelayo .
public function handle($request, Closure $next)
{
return $next($request);
}
Manje ake sizame ukusetha ipharamitha yendima ku-middleware entsha esizoyakha kusukela ekuqaleni, bese siqhubeka nokwakha I-Role Middleware ngokusebenzisa umyalo olandelayo.
Lungisa indlela yokubamba kanje
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) {
echo "Role: ".$role;
return $next($request);
}
}
sengeze ipharamitha $role
, futhi ngaphakathi kwendlela umugqa echo
ukubhala okukhiphayo igama lendima.
Manje ake sibhalise i-middleware ye-RoleMiddleware ukuze uthole indlela ethile
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,
];
Manje ukuhlola i-middleware ngepharamitha, sidinga ukudala isicelo nempendulo. Ukuze silingise impendulo masidale isilawuli esizosibiza nge-TestController
php artisan make:controller TestController --plain
umyalo osanda kukhishwa uzodala isilawuli esisha ngaphakathi kwefolda app/Http/TestController.php
, futhi ushintshe indlela index
ngomugqa 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.";
}
}
Ngemva kokusetha impendulo, sakha isicelo ngokuhlela ifayela routes.php
ngokwengeza i route role
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
kuleli qophelo singazama isibonelo ngokuvakashela i-URL http://localhost:8000/role
futhi kusiphequluli sizobona okubili echo
Role editor
Test Controller
Il terminable Middleware
yenza eminye imisebenzi ngemva kokuthunyelwa kwempendulo esipheqululini. Lokhu kungafinyelelwa ngokwakha i-middleware ngendlela qeda ku-middleware. Il terminable Middleware
kumele ibhaliswe ne middleware
global. Indlela terminate
uzothola izimpikiswano ezimbili $isicelo e $impendulo.
Indlela Terminate
kufanele idalwe njengoba kukhonjisiwe kukhodi elandelayo.
php artisan make:middleware TerminateMiddleware
Uma i-middleware idaliwe app/Http/Middleware/TerminateMiddleware.php
ake siguqule ikhodi ngendlela elandelayo
<?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.";
}
}
kulokhu sinendlela handle
kanye nendlela terminate
namapharamitha amabili $request
e $response
.
Manje ake sibhalise i-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,
];
Manje sidinga ukudala isilawuli ukuze silingise impendulo
php artisan make:controller XYZController --plain
ukuguqula okuqukethwe kwekilasi
class XYZController extends Controller {
public function index() {
echo "<br>XYZ Controller.";
}
}
Manje sidinga ukuhlela ifayela routes/web.php
ingeza imizila edingekayo ukuze wenze isicelo sisebenze
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'XYZController@index',
]);
kuleli qophelo singazama isibonelo ngokuvakashela i-URL http://localhost:8000/terminate
futhi kusiphequluli sizobona imigqa elandelayo
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
Ungahle uthande:
I-Coveware ye-Veeam izoqhubeka nokuhlinzeka ngezinsizakalo zokuphendula izigameko zokuntshontshwa kwe-inthanethi. I-Coveware izohlinzeka ngama-forensics kanye nekhono lokulungisa…
Ukulungiswa okuqagelayo kuguqula umkhakha kawoyela negesi, ngendlela emisha nesebenzayo yokuphatha izitshalo.…
I-CMA yase-UK ikhiphe isexwayiso mayelana nokuziphatha kwe-Big Tech emakethe yezobunhloli bokwenziwa. Lapho…
Isinqumo esithi "Case Green", esakhiwe yi-European Union ukuze kuthuthukiswe ukusebenza kahle kwamandla ezakhiwo, siphothule inqubo yaso yomthetho ngokuthi...