Hii ina maana kwamba wakati mtumiaji (mtazamo wa Laravel) anafanya ombi kwa seva (Kidhibiti cha Laravel), ombi litapitia katikati. Kwa njia hii kifaa cha kati kinaweza kuangalia ikiwa ombi limethibitishwa au la:
Laravel inakuwezesha defimaliza na utumie vifaa vya ziada vya kati kutekeleza kazi mbalimbali isipokuwa uthibitishaji.
Vifaa vya kati vya Laravel, kama vile uthibitishaji na ulinzi wa CSRF, ziko kwenye saraka app/Http/Middleware .
Kwa hiyo tunaweza kusema kwamba middleware ni kichujio cha ombi la http, kwa njia ambayo inawezekana kuthibitisha hali na kufanya vitendo.
Ili kuunda kifaa kipya cha kati tunaendesha amri ifuatayo:
php artisan make:middleware <name-of-middleware>
Tunatengeneza middleware
na tunaiita CheckAge
, artisan
atatujibu kama ifuatavyo:
Dirisha hapo juu linaonyesha kuwa programu ya kati imeundwa kwa mafanikio na jina " CheckAge ".
Ili kuona ikiwa CheckAge middleware imeundwa au la, nenda kwa mradi kwenye folda ya programu/Http/Middleware, na utaona faili mpya iliyoundwa.
Faili mpya iliyoundwa ina nambari ifuatayo
<?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);
}
}
Ili kutumia vifaa vya kati, tunahitaji kusajili.
Kuna aina mbili za vifaa vya kati katika Laravel:
Middleware globale
Route Middleware
Il vyombo vya kati vya kimataifa itatekelezwa kwa kila ombi la HTTP kutoka kwa programu, wakati faili ya Njia ya Kati itawekwa kwa njia maalum. Middleware inaweza kusajiliwa kwa app/Http/Kernel.php. Faili hii ina sifa mbili $middleware e $routeMiddleware . Mali ya $middleware inatumika kusajili vifaa vya kati vya kimataifa na umiliki $routeMiddleware hutumika kusajili vifaa vya kati vya njia mahususi.
Ili kusajili vifaa vya kati vya kimataifa, orodhesha darasa mwishoni mwa mali ya $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,
];
Ili kusajili vifaa vya kati vya njia mahususi, ongeza ufunguo na thamani kwenye kipengele cha $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,
];
Tumeunda CheckAge katika mfano uliopita. Sasa tunaweza kusajili hii katika mali ya njia ya kati. Nambari ya usajili kama huo imeonyeshwa hapa chini.
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,
];
Tunaweza pia kupitisha vigezo na Middleware.
Kwa mfano, ikiwa programu yako ina majukumu tofauti kama vile mtumiaji, msimamizi, msimamizi mkuu n.k. na unataka kuthibitisha hatua kulingana na jukumu, unaweza kuifanya kwa kupitisha vigezo na vifaa vya kati.
Programu ya kati tuliyounda ina kazi ifuatayo, na tunaweza kupitisha hoja maalum baada ya hoja $ ijayo .
public function handle($request, Closure $next)
{
return $next($request);
}
Sasa hebu tujaribu kuweka kigezo cha jukumu kwa kifaa kipya cha kati ambacho tutaunda kutoka mwanzo, kisha tuendelee kuunda Jukumu la Kati kwa kuendesha amri ifuatayo.
Badilisha njia ya kushughulikia kama ifuatavyo
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) {
echo "Role: ".$role;
return $next($request);
}
}
tuliongeza parameter $role
, na ndani ya njia mstari echo
kuandika pato jina la jukumu.
Sasa hebu tusajili programu ya kati ya RoleMiddleware kwa njia maalum
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,
];
Sasa ili kujaribu vifaa vya kati na parameta, tunahitaji kuunda ombi na jibu. Ili kuiga jibu, hebu tuunde kidhibiti ambacho tutakiita TestController
php artisan make:controller TestController --plain
amri iliyotekelezwa hivi karibuni itaunda kidhibiti kipya ndani ya folda app/Http/TestController.php
, na ubadilishe mbinu index
na mstari 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.";
}
}
Baada ya kuanzisha jibu, tunajenga ombi kwa kuhariri faili routes.php
kwa kuongeza route role
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
kwa hatua hii tunaweza kujaribu mfano kwa kutembelea URL http://localhost:8000/role
na katika kivinjari tutaona hizo mbili echo
Role editor
Test Controller
Il terminable Middleware
hufanya baadhi ya kazi baada ya jibu kutumwa kwa kivinjari. Hii inaweza kupatikana kwa kuunda vifaa vya kati na njia kusitisha katikati. Il terminable Middleware
lazima kusajiliwa na middleware
kimataifa. Mbinu terminate
atapokea hoja mbili $omba e Jibu la $.
Njia Terminate
lazima iundwe kama inavyoonyeshwa katika msimbo ufuatao.
php artisan make:middleware TerminateMiddleware
Mara tu kifaa cha kati kinaundwa app/Http/Middleware/TerminateMiddleware.php
wacha turekebishe nambari kama ifuatavyo
<?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.";
}
}
katika kesi hii tunayo mbinu handle
na mbinu terminate
na vigezo viwili $request
e $response
.
Sasa hebu tusajili 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,
];
Sasa tunahitaji kuunda kidhibiti ili kuiga majibu
php artisan make:controller XYZController --plain
kurekebisha yaliyomo katika darasa
class XYZController extends Controller {
public function index() {
echo "<br>XYZ Controller.";
}
}
Sasa tunahitaji kuhariri faili routes/web.php
kuongeza njia zinazohitajika ili kuwezesha ombi
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'XYZController@index',
]);
kwa hatua hii tunaweza kujaribu mfano kwa kutembelea URL http://localhost:8000/terminate
na katika kivinjari tutaona mistari ifuatayo
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
Unaweza pia kama:
Jumatatu iliyopita, Financial Times ilitangaza makubaliano na OpenAI. FT inatoa leseni kwa uandishi wake wa habari wa kiwango cha kimataifa…
Mamilioni ya watu hulipia huduma za utiririshaji, kulipa ada za usajili za kila mwezi. Ni maoni ya kawaida kwamba wewe…
Coveware by Veeam itaendelea kutoa huduma za kukabiliana na matukio ya ulaghai mtandaoni. Coveware itatoa uwezo wa uchunguzi na urekebishaji…
Matengenezo ya kitabiri yanaleta mapinduzi katika sekta ya mafuta na gesi, kwa mbinu bunifu na makini ya usimamizi wa mitambo.…