Izvi zvinoreva kuti kana mushandisi (Laravel maonero) aita chikumbiro kune server (Laravel controller), chikumbiro chinoenda nepakati. Nenzira iyi iyo middleware inogona kutarisa kana chikumbiro chakavimbika kana kwete:
Laravel inobvumidza iwe defipedzisa uye shandisa yekuwedzera yepakati kuita mabasa akasiyana siyana kunze kwekusimbisa.
Laravel middlewares, senge chokwadi uye CSRF dziviriro, dziri mudhairekitori app/Http/Middleware .
Naizvozvo tinogona kutaura kuti iyo yepakati ndeye http yekukumbira sefa, kuburikidza iyo inogoneka kuongorora mamiriro uye kuita zviito.
Kugadzira nyowani yepakati tinomhanyisa murairo unotevera:
php artisan make:middleware <name-of-middleware>
Isu tinogadzira iyo middleware
uye tinozvidaidza CheckAge
, artisan
achatipindura sezvinotevera:
Iwindo riri pamusoro rinoratidza kuti iyo yepakati yakagadzirwa zvakabudirira ine zita ” CheckAge ".
Kuti uone kana CheckAge middleware yagadzirwa kana kwete, enda kupurojekiti iri muapp/Http/Middleware forodha, uye uchaona faira richangobva kugadzirwa.
Iyo ichangobva kugadzirwa faira ine inotevera kodhi
<?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);
}
}
Kuti tishandise middleware, tinoda kuinyoresa.
Kune marudzi maviri epakati epakati muLaravel:
Middleware globale
Route Middleware
Il global middleware ichaitwa pachikumbiro cheHTTP chega chega kubva pachikumbiro, uku Nzira yeMiddleware ichagoverwa kune imwe nzira. Middleware inogona kunyoreswa pa app/Http/Kernel.php. Iri faira rine zvinhu zviviri $pakati e $nziraMiddleware . Iyo $middleware pfuma inoshandiswa kunyoresa pasi rose middleware uye muridzi $nziraMiddleware inoshandiswa kunyoresa nzira-yakananga middleware.
Kunyoresa global middleware, nyora kirasi panoperera $middleware pfuma.
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,
];
Kunyoresa nzira-chaiyo yepakati, wedzera kiyi uye kukosha kune iyo $routeMiddleware pfuma.
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,
];
Isu takagadzira CheckAge mumuenzaniso wapfuura. Isu tinogona ikozvino kunyoresa izvi mumiddleware nzira pfuma. Kodhi yekunyoresa kwakadaro inoratidzwa pazasi.
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,
];
Isu tinogona zvakare kupfuudza paramita neMiddleware.
Semuenzaniso, kana application yako iine mabasa akasiyana semushandisi, admin, super admin nezvimwe. uye iwe unoda kutendesa chiito chinoenderana nebasa, unogona kuzviita nekupfuura paramita nepakati.
Iyo yepakati yatakagadzira ine inotevera basa, uye isu tinokwanisa kupasa tsika nharo mushure mekupokana $inotevera .
public function handle($request, Closure $next)
{
return $next($request);
}
Zvino ngatiedzei kuseta iyo parameter kune nyowani yepakati yatichazogadzira kubva kutanga, tozoenderera mberi nekugadzira Role Middleware nekumhanyisa murairo unotevera.
Shandura nzira yekubata nenzira inotevera
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) {
echo "Role: ".$role;
return $next($request);
}
}
takawedzera parameter $role
, uye mukati menzira mutsara echo
kunyora zvakabuda zita rebasa racho.
Zvino ngatinyorei iyo RoleMiddleware middleware yeimwe nzira
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,
];
Iye zvino kuyedza iyo yepakati neiyo parameter, isu tinofanirwa kugadzira chikumbiro nemhinduro. Kutevedzera mhinduro ngatigadzirei controller yatinodaidza TestController
php artisan make:controller TestController --plain
murairo uchangoitwa uchagadzira mutongi mutsva mukati mefolda app/Http/TestController.php
, uye shandura nzira index
nemutsara 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.";
}
}
Mushure mekugadzirisa mhinduro, tinovaka chikumbiro nekugadzirisa faira routes.php
nekuwedzera the route role
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
panguva ino tinogona kuedza muenzaniso nekushanyira URL http://localhost:8000/role
uye mubrowser tichaona maviri echo
Role editor
Test Controller
Il terminable Middleware
inoita mamwe mabasa mushure mekunge mhinduro yatumirwa kubrowser. Izvi zvinogona kuwanikwa nekugadzira yepakati neiyo nzira kugumisa pakati. Il terminable Middleware
inofanira kunyoreswa ne middleware
global. Nzira terminate
achagamuchira nharo mbiri $ request e $response.
Maitiro Terminate
inofanira kugadzirwa sezvinoratidzwa mukodhi inotevera.
php artisan make:middleware TerminateMiddleware
Kamwe iyo middleware inogadzirwa app/Http/Middleware/TerminateMiddleware.php
ngatigadzirise kodhi sezvinotevera
<?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.";
}
}
munyaya iyi tine nzira handle
uye nzira terminate
nemaparameter maviri $request
e $response
.
Zvino ngatinyorei 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,
];
Iye zvino tinoda kugadzira mutongi kuti atevedzere mhinduro
php artisan make:controller XYZController --plain
kugadzirisa zviri mukati mekirasi
class XYZController extends Controller {
public function index() {
echo "<br>XYZ Controller.";
}
}
Iye zvino tinoda kugadzirisa faira routes/web.php
kuwedzera nzira dzinodiwa kuti chikumbiro chishande
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'XYZController@index',
]);
panguva ino tinogona kuedza muenzaniso nekushanyira URL http://localhost:8000/terminate
uye mubrowser tichaona mitsara inotevera
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
Unogona zvakare kuda:
Chikamu chengarava isimba rechokwadi rehupfumi hwenyika, iro rakafamba richienda kumusika wemabhiriyoni zana nemakumi mashanu...
Muvhuro wapfuura, iyo Financial Times yakazivisa chibvumirano neOpenAI. FT inopa marezinesi ayo epasi rose kutapa nhau…
Mamirioni avanhu anobhadhara masevhisi ekutepfenyura, achibhadhara mari yekunyoresa pamwedzi. Ipfungwa yakajairika kuti iwe…
Coveware neVeeam icharamba ichipa cyber kubira chiitiko mhinduro masevhisi. Coveware ichapa forensics uye kugadzirisa kugona…