Tas nozīmē, ka tad, kad lietotājs (Laravel skats) iesniedz pieprasījumu serverim (Laravel kontrolleris), pieprasījums tiks nosūtīts caur starpprogrammatūru. Tādā veidā starpprogrammatūra var pārbaudīt, vai pieprasījums ir autentificēts vai nē:
Laravel ļauj jums defipabeigt un izmantot papildu starpprogrammatūru, lai veiktu dažādus uzdevumus, izņemot autentifikāciju.
Laravel starpprogrammatūra, piemēram, autentifikācija un CSRF aizsardzība, atrodas direktorijā app/Http/Middleware .
Tāpēc mēs varam teikt, ka starpprogrammatūra ir http pieprasījuma filtrs, caur kuru ir iespējams pārbaudīt nosacījumus un veikt darbības.
Lai izveidotu jaunu starpprogrammatūru, mēs izpildām šādu komandu:
php artisan make:middleware <name-of-middleware>
Mēs veidojam middleware
un mēs to saucam CheckAge
, artisan
atbildēs mums šādi:
Augšējais logs parāda, ka starpprogrammatūra ir veiksmīgi izveidota ar nosaukumu ” Pārbaudīt vecumu ".
Lai redzētu, vai CheckAge starpprogrammatūra ir izveidota vai nē, dodieties uz projektu mapē app/Http/Middleware, un jūs redzēsit jaunizveidoto failu.
Jaunizveidotajam failam ir šāds kods
<?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);
}
}
Lai izmantotu starpprogrammatūru, mums tā ir jāreģistrē.
Laravel ir divu veidu starpprogrammatūra:
Middleware globale
Route Middleware
Il globālā starpprogrammatūra tiks izpildīts uz katru HTTP pieprasījumu no lietojumprogrammas, kamēr Maršruta starpprogrammatūra tiks piešķirts noteiktam ceļam. Starpprogrammatūru var reģistrēt vietnē app/Http/Kernel.php. Šajā failā ir divi rekvizīti $starpprogrammatūra e $routeMiddleware . $middleware īpašums tiek izmantots, lai reģistrētu globālu starpprogrammatūru un īpašumtiesības $routeMiddleware tiek izmantots, lai reģistrētu maršrutam specifisku starpprogrammatūru.
Lai reģistrētu globālo starpprogrammatūru, rekvizīta $middleware beigās norādiet klasi.
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,
];
Lai reģistrētu maršrutam specifisku starpprogrammatūru, rekvizītam $routeMiddleware pievienojiet atslēgu un vērtību.
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,
];
Mēs radījām Pārbaudīt vecumu iepriekšējā piemērā. Tagad mēs to varam reģistrēt starpprogrammatūras maršruta rekvizītā. Šādas reģistrācijas kods ir parādīts zemāk.
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,
];
Mēs varam arī nodot parametrus ar starpprogrammatūru.
Piemēram, ja jūsu lietojumprogrammai ir dažādas lomas, piemēram, lietotājs, administrators, galvenais administrators utt. un vēlaties autentificēt darbību, pamatojoties uz lomu, varat to izdarīt, nododot parametrus ar starpprogrammatūru.
Mūsu izveidotā starpprogrammatūra satur šādu funkciju, un pēc argumenta mēs varam nodot pielāgotus argumentus $nākamais .
public function handle($request, Closure $next)
{
return $next($request);
}
Tagad mēģināsim iestatīt lomas parametru jaunai starpprogrammatūrai, kuru mēs izveidosim no nulles, un pēc tam turpināsim izveidot lomu starpprogrammatūru, izpildot šādu komandu
Mainiet roktura metodi šādi
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) {
echo "Role: ".$role;
return $next($request);
}
}
mēs pievienojām parametru $role
, un metodes iekšpusē līnija echo
lai izvadā uzrakstītu lomas nosaukumu.
Tagad reģistrēsim RoleMiddleware starpprogrammatūru konkrētam ceļam
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,
];
Tagad, lai pārbaudītu starpprogrammatūru ar parametru, mums ir jāizveido pieprasījums un atbilde. Lai simulētu atbildi, izveidosim kontrolieri, ko sauksim par TestController
php artisan make:controller TestController --plain
tikko izpildītā komanda mapē izveidos jaunu kontrolleri app/Http/TestController.php
un mainiet metodi index
ar līniju 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.";
}
}
Pēc atbildes iestatīšanas mēs izveidojam pieprasījumu, rediģējot failu routes.php
pievienojot route role
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
šajā brīdī mēs varam izmēģināt piemēru, apmeklējot URL http://localhost:8000/role
un pārlūkprogrammā mēs redzēsim abus echo
Role editor
Test Controller
Il terminable Middleware
veic dažus uzdevumus pēc tam, kad atbilde ir nosūtīta pārlūkprogrammai. To var panākt, izveidojot starpprogrammatūru ar metodi pārtraukt starpprogrammatūrā. Il terminable Middleware
jābūt reģistrētam middleware
globāli. Metode terminate
saņems divus argumentus $pieprasījums e $atbilde.
Metode Terminate
ir jāizveido, kā parādīts nākamajā kodā.
php artisan make:middleware TerminateMiddleware
Kad starpprogrammatūra ir izveidota app/Http/Middleware/TerminateMiddleware.php
modificēsim kodu šādi
<?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.";
}
}
šajā gadījumā mums ir metode handle
un metode terminate
ar diviem parametriem $request
e $response
.
Tagad reģistrēsim starpprogrammatūru
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,
];
Tagad mums ir jāizveido kontrolieris, lai simulētu atbildi
php artisan make:controller XYZController --plain
klases satura modificēšana
class XYZController extends Controller {
public function index() {
echo "<br>XYZ Controller.";
}
}
Tagad mums ir jārediģē fails routes/web.php
pievienojot pieprasījuma aktivizēšanai nepieciešamos maršrutus
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'XYZController@index',
]);
šajā brīdī mēs varam izmēģināt piemēru, apmeklējot URL http://localhost:8000/terminate
un pārlūkprogrammā mēs redzēsim šādas rindas
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
Jums varētu patikt arī:
Interfeisa segregācijas princips ir viens no pieciem objektorientētā dizaina SOLIDA principiem. Klasei vajadzētu būt…
Microsoft Excel ir atsauces rīks datu analīzei, jo tas piedāvā daudzas iespējas datu kopu organizēšanai,…
Walliance, SIM un platforma starp līderiem Eiropā nekustamo īpašumu kopfinansēšanas jomā kopš 2017. gada, paziņo par…
Filament ir "paātrināta" Laravel izstrādes sistēma, kas nodrošina vairākus pilnus komponentus. Tas ir paredzēts, lai vienkāršotu procesu…
«Man ir jāatgriežas, lai pabeigtu savu evolūciju: es projicēšu sevi datorā un kļūšu par tīru enerģiju. Kad apmetās…
Google DeepMind ievieš uzlabotu sava mākslīgā intelekta modeļa versiju. Jaunais uzlabotais modelis nodrošina ne tikai…
Laravel, kas slavena ar savu eleganto sintaksi un jaudīgām funkcijām, nodrošina arī stabilu pamatu moduļu arhitektūrai. Tur…
Cisco un Splunk palīdz klientiem paātrināt viņu ceļu uz nākotnes drošības operāciju centru (SOC), izmantojot…