Lewati ke konten utama

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 di app/Http/Kernel.php. Jenis Middleware
  • 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.