Þetta þýðir að þegar notandinn (Laravel view) leggur fram beiðni til netþjónsins (Laravel stjórnandi), mun beiðnin fara í gegnum millibúnaðinn. Þannig getur millihugbúnaðurinn athugað hvort beiðnin sé staðfest eða ekki:
Laravel gerir þér kleift defiklára og nota viðbótarmiðlun til að framkvæma margvísleg verkefni nema auðkenningu.
Laravel millivörur, eins og auðkenning og CSRF vernd, eru staðsett í skránni app/Http/miðlbúnaður .
Við getum því sagt að millihugbúnaðurinn sé http beiðnisía, þar sem hægt er að sannreyna aðstæður og framkvæma aðgerðir.
Til að búa til nýjan millibúnað keyrum við eftirfarandi skipun:
php artisan make:middleware <name-of-middleware>
Við búum til middleware
og við köllum það CheckAge
, artisan
mun svara okkur sem hér segir:
Glugginn hér að ofan sýnir að millihugbúnaðurinn hefur verið búinn til með nafninu " Athugaðu Aldur ".
Til að sjá hvort CheckAge millihugbúnaðurinn er búinn til eða ekki, farðu í verkefnið í app/Http/Middleware möppunni og þú munt sjá nýstofnaða skrána
Nýstofnaða skráin hefur eftirfarandi kóða
<?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);
}
}
Til að nota millihugbúnað þurfum við að skrá hann.
Það eru tvær tegundir af millibúnaði í Laravel:
Middleware globale
Route Middleware
Il alþjóðleg millihugbúnaður verður keyrt á hverri HTTP beiðni frá forritinu, á meðan Leið Middleware verður úthlutað tiltekinni leið. Hægt er að skrá miðbúnað á app/Http/Kernel.php. Þessi skrá inniheldur tvo eiginleika $miðjubúnaður e $routeMiddleware . The $middleware eign er notað til að skrá alþjóðlegt millihugbúnað og eignarhald $routeMiddleware er notað til að skrá leiðarsértækan millibúnað.
Til að skrá alþjóðlegt millihugbúnað skaltu skrá flokkinn í lok $middleware eignarinnar.
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,
];
Til að skrá leiðarsértæka millihugbúnað skaltu bæta lyklinum og gildinu við $routeMiddleware eignina.
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,
];
Við sköpuðum Athugaðu Aldur í fyrra dæminu. Við getum nú skráð þetta í millihugbúnaðarleiðareignina. Kóðinn fyrir slíka skráningu er sýndur hér að neðan.
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,
];
Við getum líka sent breytur með Middleware.
Til dæmis, ef forritið þitt hefur mismunandi hlutverk eins og notandi, admin, ofur admin o.s.frv. og þú vilt auðkenna aðgerðina út frá hlutverkinu, þú getur gert það með því að senda færibreyturnar með millibúnaðinum.
Miðlunin sem við bjuggum til inniheldur eftirfarandi aðgerð og við getum sent sérsniðnar röksemdir á eftir rifrildinni $næst .
public function handle($request, Closure $next)
{
return $next($request);
}
Nú skulum við reyna að stilla hlutverkabreytuna á nýjan millihugbúnað sem við ætlum að búa til frá grunni og halda síðan áfram að búa til hlutverkamillibúnað með því að keyra eftirfarandi skipun
Breyttu handfangsaðferðinni sem hér segir
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) {
echo "Role: ".$role;
return $next($request);
}
}
við bættum við færibreytunni $role
, og inni í aðferðinni línunni echo
að skrifa úttakið nafn hlutverksins.
Nú skulum við skrá RoleMiddleware miðlunarbúnaðinn fyrir ákveðna leið
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,
];
Nú til að prófa millibúnaðinn með færibreytunni þurfum við að búa til beiðni og svar. Til að líkja eftir svarinu skulum við búa til stjórnandann sem við munum kalla TestController
php artisan make:controller TestController --plain
skipunin sem var keyrð mun búa til nýjan stjórnanda inni í möppunni app/Http/TestController.php
, og breyttu aðferðinni index
með línunni 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.";
}
}
Eftir að hafa sett upp svarið byggjum við beiðnina með því að breyta skránni routes.php
með því að bæta við route role
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
á þessum tímapunkti getum við prófað dæmið með því að fara á slóðina http://localhost:8000/role
og í vafranum munum við sjá þetta tvennt echo
Role editor
Test Controller
Il terminable Middleware
sinnir sumum verkefnum eftir að svarið er sent í vafrann. Þetta er hægt að ná með því að búa til millihugbúnað með aðferðinni enda í millibúnaði. Il terminable Middleware
verður að vera skráður hjá middleware
alþjóðlegt. Aðferðin terminate
fái tvö rök $beiðni e $svar.
Aðferðin Terminate
verður að búa til eins og sýnt er í eftirfarandi kóða.
php artisan make:middleware TerminateMiddleware
Þegar millihugbúnaðurinn er búinn til app/Http/Middleware/TerminateMiddleware.php
við skulum breyta kóðanum sem hér segir
<?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.";
}
}
í þessu tilfelli höfum við aðferð handle
og aðferð terminate
með breytunum tveimur $request
e $response
.
Nú skulum við skrá millibúnaðinn
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,
];
Nú þurfum við að búa til stjórnandann til að líkja eftir svarinu
php artisan make:controller XYZController --plain
að breyta innihaldi bekkjarins
class XYZController extends Controller {
public function index() {
echo "<br>XYZ Controller.";
}
}
Nú þurfum við að breyta skránni routes/web.php
að bæta við þeim leiðum sem þarf til að virkja beiðnina
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'XYZController@index',
]);
á þessum tímapunkti getum við prófað dæmið með því að fara á slóðina http://localhost:8000/terminate
og í vafranum munum við sjá eftirfarandi línur
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
Þú gætir líka haft gaman af:
Flotageirinn er sannkallað alþjóðlegt efnahagsveldi sem hefur siglt í átt að 150 milljarða markaði...
Síðasta mánudag tilkynnti Financial Times um samning við OpenAI. FT leyfir heimsklassa blaðamennsku…
Milljónir manna borga fyrir streymisþjónustu og greiða mánaðarlega áskriftargjöld. Það er almenn skoðun að þú…
Coveware frá Veeam mun halda áfram að veita viðbragðsþjónustu fyrir tölvukúgun. Coveware mun bjóða upp á réttar- og úrbótamöguleika ...