Middleware
Middleware di Laravel
Middleware di Laravel menyediakan lapisan penyaringan untuk permintaan HTTP yang masuk ke aplikasi Anda. Middleware memungkinkan Anda untuk menambahkan logika tambahan sebelum atau sesudah permintaan ditangani oleh aplikasi. Contohnya, middleware dapat digunakan untuk otentikasi, logging, atau modifikasi permintaan.
Cara Kerja Middleware
- Setiap permintaan HTTP yang masuk akan melewati serangkaian middleware sebelum mencapai route dan controller yang sesuai.
- Middleware dapat memodifikasi permintaan atau respons, atau menghentikan permintaan sepenuhnya.
- Middleware dijalankan dalam urutan yang ditentukan.
Membuat Middleware
Anda dapat membuat middleware baru menggunakan perintah Artisan:
Bash
php artisan make:middleware NamaMiddleware
- Perintah ini akan membuat file middleware baru di direktori
app/Http/Middleware
.
Contoh Middleware
PHP
// app/Http/Middleware/CheckAge.php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class CheckAge
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next)
{
if ($request->age && $request->age < 18) {
return redirect('home');
}
return $next($request);
}
}
- Middleware ini memeriksa apakah usia pengguna kurang dari 18 tahun. Jika ya, pengguna akan dialihkan ke halaman beranda.
Mendaftarkan Middleware
Middleware dapat didaftarkan di beberapa tempat:
- Global Middleware: Middleware yang didaftarkan secara global akan dijalankan untuk setiap permintaan.
- Daftarkan di properti $middleware di app/Http/Kernel.php.
- Route Middleware: Middleware yang didaftarkan sebagai route middleware dapat diterapkan ke rute tertentu.
- Daftarkan di properti $routeMiddleware di app/Http/Kernel.php.
- Terapkan middleware ke rute menggunakan metode middleware():
PHP
Route::get('/admin', function () {
// ...
})->middleware('auth');
-
Middleware Groups: Middleware groups memungkinkan Anda untuk mengelompokkan beberapa middleware dan menerapkannya ke rute.
- Daftarkan di properti
$middlewareGroups
diapp/Http/Kernel.php
. Jenis Middleware
- Daftarkan di properti
-
Authentication Middleware: Memeriksa apakah pengguna telah diautentikasi.
-
Authorization Middleware: Memeriksa apakah pengguna memiliki izin untuk mengakses sumber daya.
-
Logging Middleware: Mencatat informasi tentang permintaan.
-
CSRF Middleware: Melindungi aplikasi dari serangan CSRF.
Middleware Parameters
Middleware dapat menerima parameter:
PHP
// app/Http/Middleware/CheckRole.php
public function handle(Request $request, Closure $next, $role)
{
if ($request->user()->role !== $role) {
// ...
}
return $next($request);
}
- Terapkan parameter middleware ke rute:
PHP
Route::get('/admin', function () {
// ...
})->middleware('role:admin');
Kesimpulan
Middleware adalah alat yang ampuh untuk menambahkan logika tambahan ke aplikasi Laravel Anda. Dengan middleware, Anda dapat mengontrol akses, memodifikasi permintaan, dan melakukan berbagai tugas lainnya.