Iki tegese nalika pangguna (Laravel view) nggawe panjalukan kanggo server (Laravel controller), panjalukan bakal liwat middleware. Kanthi cara iki middleware bisa mriksa manawa panyuwunan kasebut dikonfirmasi utawa ora:
Laravel ngidini sampeyan defirampung lan gunakake middleware tambahan kanggo nindakake macem-macem tugas kajaba otentikasi.
Laravel middlewares, kayata otentikasi lan proteksi CSRF, dumunung ing direktori app/Http/Middleware .
Mulane kita bisa ngomong yen middleware minangka panyaring panyuwunan http, sing bisa verifikasi kahanan lan nindakake tumindak.
Kanggo nggawe middleware anyar, kita mbukak printah ing ngisor iki:
php artisan make:middleware <name-of-middleware>
Kita nggawe middleware
lan kita nelpon CheckAge
, artisan
bakal mangsuli kita kaya ing ngisor iki:
Jendhela ing ndhuwur nuduhake yen middleware wis kasil digawe kanthi jeneng " PriksaAge ".
Kanggo ndeleng manawa middleware CheckAge digawe utawa ora, pindhah menyang proyek ing folder app/Http/Middleware, lan sampeyan bakal weruh file sing mentas digawe.
File sing mentas digawe nduweni kode ing ngisor iki
<?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);
}
}
Kanggo nggunakake middleware, kita kudu ndhaptar.
Ana rong jinis middleware ing Laravel:
Middleware globale
Route Middleware
Il middleware global bakal kaleksanan ing saben request HTTP saka aplikasi, nalika ing Rute Middleware bakal diutus kanggo path tartamtu. Middleware bisa didaftar ing app/Http/Kernel.php. Berkas iki ngemot rong sifat $ piranti tengah e $routeMiddleware . Properti $ middleware digunakake kanggo ndhaftar middleware global lan kepemilikan $routeMiddleware digunakake kanggo ndhaftar middleware spesifik rute.
Kanggo ndhaptar middleware global, dhaptar kelas ing mburi properti $ 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,
];
Kanggo ndhaptar middleware khusus rute, tambahake kunci lan nilai properti $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,
];
Kita digawe PriksaAge ing conto sadurunge. Saiki kita bisa ndhaftar iki ing properti rute middleware. Kode kanggo registrasi kasebut ditampilake ing ngisor iki.
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,
];
Kita uga bisa ngliwati parameter karo Middleware.
Contone, yen aplikasi sampeyan duwe peran beda kaya pangguna, admin, super admin etc. lan sampeyan pengin keasliane tumindak adhedhasar peran, sampeyan bisa nindakake iku dening pass paramèter karo middleware.
Middleware sing digawe ngemot fungsi ing ngisor iki, lan kita bisa ngliwati argumen khusus sawise argumen kasebut $sabanjure .
public function handle($request, Closure $next)
{
return $next($request);
}
Saiki ayo nyoba nyetel parameter peran menyang middleware anyar sing bakal digawe saka awal, banjur nerusake nggawe Role Middleware kanthi nglakokake perintah ing ngisor iki
Ngowahi cara nangani minangka nderek
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) {
echo "Role: ".$role;
return $next($request);
}
}
kita nambah parameter $role
, lan nang metode baris echo
kanggo nulis output jeneng peran.
Saiki ayo ndhaptar middleware RoleMiddleware kanggo path tartamtu
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,
];
Saiki kanggo nyoba middleware karo parameter, kita kudu nggawe panjalukan lan respon. Kanggo simulasi respon, ayo nggawe controller sing bakal diarani TestController
php artisan make:controller TestController --plain
printah mung kaleksanan bakal nggawe controller anyar nang folder app/Http/TestController.php
, lan ngganti cara index
karo baris 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.";
}
}
Sawise nyetel respon, kita mbangun panjalukan kanthi nyunting file kasebut routes.php
kanthi nambahake route role
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
ing titik iki kita bisa nyoba conto kanthi ngunjungi URL http://localhost:8000/role
lan ing browser kita bakal weruh loro echo
Role editor
Test Controller
Il terminable Middleware
nindakake sawetara tugas sawise respon dikirim menyang browser. Iki bisa digayuh kanthi nggawe middleware kanthi metode kasebut mungkasi ing middleware. Il terminable Middleware
kudu ndhaftar ing middleware
global. Metode terminate
bakal nampa rong argumen $anjaluk e $respon.
Caranipun Terminate
kudu digawe kaya sing ditampilake ing kode ing ngisor iki.
php artisan make:middleware TerminateMiddleware
Sawise middleware digawe app/Http/Middleware/TerminateMiddleware.php
ayo diowahi kode kaya ing ngisor iki
<?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.";
}
}
ing kasus iki kita duwe cara handle
lan metode terminate
karo loro paramèter $request
e $response
.
Saiki ayo ndhaptar 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,
];
Saiki kita kudu nggawe controller kanggo simulasi respon
php artisan make:controller XYZController --plain
ngowahi isi kelas
class XYZController extends Controller {
public function index() {
echo "<br>XYZ Controller.";
}
}
Saiki kita kudu ngowahi file kasebut routes/web.php
nambahake rute sing dibutuhake kanggo ngaktifake panyuwunan
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'XYZController@index',
]);
ing titik iki kita bisa nyoba conto kanthi ngunjungi URL http://localhost:8000/terminate
lan ing browser kita bakal weruh baris ing ngisor iki
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
Sampeyan bisa uga seneng:
Operasi ophthalmoplasty nggunakake penampil komersial Apple Vision Pro ditindakake ing Poliklinik Catania…
Ngembangake katrampilan motorik sing apik liwat pewarnaan nyiapake bocah kanggo katrampilan sing luwih rumit kaya nulis. Kanggo mewarnai…
Sektor angkatan laut minangka kekuwatan ekonomi global sing sejatine, sing wis ngarahake pasar 150 milyar ...
Senin kepungkur, Financial Times ngumumake kesepakatan karo OpenAI. FT menehi lisensi jurnalisme kelas donya…