Ini berarti bahwa ketika pengguna (tampilan Laravel) membuat permintaan ke server (pengontrol Laravel), permintaan tersebut akan melalui middleware. Dengan cara ini middleware dapat memeriksa apakah permintaan diautentikasi atau tidak:
Laravel memungkinkan Anda untuk defiselesaikan dan gunakan middleware tambahan untuk melakukan berbagai tugas kecuali otentikasi.
Middleware Laravel, seperti otentikasi dan perlindungan CSRF, terletak di direktori app/Http/Middleware .
Oleh karena itu kami dapat mengatakan bahwa middleware adalah filter permintaan http, yang memungkinkan untuk memverifikasi kondisi dan melakukan tindakan.
Untuk membuat middleware baru, kami menjalankan perintah berikut:
php artisan make:middleware <name-of-middleware>
Kami membuat middleware
dan kami menyebutnya CheckAge
, artisan
akan menjawab kami sebagai berikut:
Jendela di atas menunjukkan bahwa middleware telah berhasil dibuat dengan nama ” Periksa Usia ".
Untuk melihat apakah middleware CheckAge dibuat atau tidak, buka proyek di folder app/Http/Middleware, dan Anda akan melihat file yang baru dibuat
File yang baru dibuat memiliki kode berikut
<?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);
}
}
Untuk menggunakan middleware, kita perlu mendaftarkannya.
Ada dua jenis middleware di Laravel:
Middleware globale
Route Middleware
Il middleware global akan dieksekusi pada setiap permintaan HTTP dari aplikasi, sedangkan Rute Middleware akan ditugaskan ke jalur tertentu. Middleware dapat didaftarkan di app/Http/Kernel.php. File ini berisi dua properti $perangkat menengah e $routeMiddleware . Properti $middleware digunakan untuk mendaftarkan middleware global dan kepemilikan $routeMiddleware digunakan untuk mendaftarkan middleware khusus rute.
Untuk mendaftarkan middleware global, daftarkan kelas di akhir 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,
];
Untuk mendaftarkan middleware khusus rute, tambahkan kunci dan nilai ke 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,
];
Kami membuat Periksa Usia pada contoh sebelumnya. Kami sekarang dapat mendaftarkan ini di properti route middleware. Kode untuk pendaftaran tersebut ditunjukkan di bawah ini.
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,
];
Kami juga dapat melewati parameter dengan Middleware.
Misalnya, jika aplikasi Anda memiliki peran berbeda seperti pengguna, admin, admin super, dll. dan Anda ingin mengautentikasi tindakan berdasarkan peran, Anda dapat melakukannya dengan meneruskan parameter dengan middleware.
Middleware yang kami buat berisi fungsi berikut, dan kami dapat meneruskan argumen khusus setelah argumen $berikutnya .
public function handle($request, Closure $next)
{
return $next($request);
}
Sekarang mari kita coba atur parameter role ke middleware baru yang akan kita buat dari awal, kemudian lanjutkan membuat Role Middleware dengan menjalankan perintah berikut
Ubah metode pegangan sebagai berikut
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware {
public function handle($request, Closure $next, $role) {
echo "Role: ".$role;
return $next($request);
}
}
kami menambahkan parameter $role
, dan di dalam metode baris echo
untuk menulis output nama peran.
Sekarang mari daftarkan middleware RoleMiddleware untuk jalur tertentu
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,
];
Sekarang untuk menguji middleware dengan parameter, kita perlu membuat permintaan dan tanggapan. Untuk mensimulasikan respons, mari buat pengontrol yang akan kita panggil TestController
php artisan make:controller TestController --plain
perintah yang baru saja dieksekusi akan membuat pengontrol baru di dalam folder app/Http/TestController.php
, dan ubah metodenya index
dengan garis 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.";
}
}
Setelah menyiapkan respons, kami membuat permintaan dengan mengedit file routes.php
dengan menambahkan route role
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
pada titik ini kita dapat mencoba contohnya dengan mengunjungi URL http://localhost:8000/role
dan di browser kita akan melihat keduanya echo
Role editor
Test Controller
Il terminable Middleware
melakukan beberapa tugas setelah respons dikirim ke browser. Ini dapat dicapai dengan membuat middleware dengan metode tersebut berhenti di middleware. Il terminable Middleware
harus terdaftar di middleware
global. Metode terminate
akan menerima dua argumen $ permintaan e $respons.
Metode Terminate
harus dibuat seperti yang ditunjukkan pada kode berikut.
php artisan make:middleware TerminateMiddleware
Setelah middleware dibuat app/Http/Middleware/TerminateMiddleware.php
mari kita ubah kodenya sebagai berikut
<?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.";
}
}
dalam hal ini kami memiliki metode handle
dan sebuah metode terminate
dengan kedua parameter tersebut $request
e $response
.
Sekarang mari daftarkan 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,
];
Sekarang kita perlu membuat pengontrol untuk mensimulasikan respons
php artisan make:controller XYZController --plain
memodifikasi isi kelas
class XYZController extends Controller {
public function index() {
echo "<br>XYZ Controller.";
}
}
Sekarang kita perlu mengedit file routes/web.php
menambahkan rute yang diperlukan untuk mengaktifkan permintaan
Route::get('terminate',[
'middleware' => 'terminate',
'uses' => 'XYZController@index',
]);
pada titik ini kita dapat mencoba contohnya dengan mengunjungi URL http://localhost:8000/terminate
dan di browser kita akan melihat baris berikut
Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware
Ercole Palmeri
Anda mungkin juga menyukai:
Jutaan orang membayar layanan streaming, membayar biaya berlangganan bulanan. Sudah menjadi pendapat umum bahwa Anda…
Coveware by Veeam akan terus menyediakan layanan respons insiden pemerasan siber. Coveware akan menawarkan kemampuan forensik dan remediasi…
Pemeliharaan prediktif merevolusi sektor minyak & gas, dengan pendekatan inovatif dan proaktif terhadap manajemen pembangkit listrik.…
CMA Inggris telah mengeluarkan peringatan tentang perilaku Big Tech di pasar kecerdasan buatan. Di sana…