DEV Community

Muhammad Iqbal
Muhammad Iqbal

Posted on

MIDDLEWARE

Middleware pada Laravel berfungsi sebagai lapisan penyaring untuk memproses permintaan HTTP sebelum mencapai controller. Beberapa kegunaan utama middleware adalah:

A. Autentikasi dan Otorisasi:

  • Memastikan bahwa pengguna yang mengakses rute tertentu telah login atau memiliki hak akses yang sesuai.
   Route::get('/dashboard', [DashboardController::class, 'index'])->middleware('auth');
Enter fullscreen mode Exit fullscreen mode

B. Memeriksa Token CSRF:

  • Melindungi aplikasi dari serangan CSRF (Cross-Site Request Forgery) dengan memverifikasi token pada permintaan yang masuk.
   Route::post('/form-submit', [FormController::class, 'submit'])->middleware('csrf');
Enter fullscreen mode Exit fullscreen mode

C. Logging:

  • Mencatat permintaan dan respons yang masuk untuk tujuan debugging atau analisis.
   Route::get('/profile', [ProfileController::class, 'show'])->middleware('log');
Enter fullscreen mode Exit fullscreen mode

D. Memodifikasi Permintaan dan Respons:

  • Mengubah atau menambahkan data pada permintaan sebelum mencapai controller atau pada respons sebelum dikirim ke klien.
   public function handle($request, Closure $next)
   {
       $request->merge(['added' => 'value']);
       $response = $next($request);
       $response->header('X-Header', 'Value');
       return $response;
   }
Enter fullscreen mode Exit fullscreen mode

E. Penyaringan IP:

  • Mengizinkan atau menolak permintaan berdasarkan alamat IP.
   Route::get('/admin', [AdminController::class, 'index'])->middleware('ip.filter');
Enter fullscreen mode Exit fullscreen mode

F. Rate Limiting:

  • Membatasi jumlah permintaan yang bisa dilakukan oleh pengguna dalam jangka waktu tertentu untuk mencegah penyalahgunaan atau serangan DDoS.
   Route::get('/api', [ApiController::class, 'index'])->middleware('throttle:60,1');
Enter fullscreen mode Exit fullscreen mode

G. Menangani Preflight Requests:

  • Mengelola permintaan preflight CORS yang dikirim oleh browser sebelum permintaan utama dalam aplikasi web.
   Route::options('{any}', function () {
       return response()->json();
   })->where('any', '.*')->middleware('cors');
Enter fullscreen mode Exit fullscreen mode

Contoh Membuat Middleware

Untuk membuat middleware baru, gunakan perintah Artisan:

php artisan make:middleware CheckAge
Enter fullscreen mode Exit fullscreen mode

Contoh implementasi middleware CheckAge:

namespace App\Http\Middleware;

use Closure;

class CheckAge
{
    public function handle($request, Closure $next)
    {
        if ($request->age <= 200) {
            return redirect('home');
        }

        return $next($request);
    }
}
Enter fullscreen mode Exit fullscreen mode

Lalu, daftarkan middleware ini di app/Http/Kernel.php:

protected $routeMiddleware = [
    // ...
    'check.age' => \App\Http\Middleware\CheckAge::class,
];
Enter fullscreen mode Exit fullscreen mode

Dan gunakan middleware di rute:

Route::get('/restricted', function () {
    // Konten yang dibatasi usia
})->middleware('check.age');
Enter fullscreen mode Exit fullscreen mode

Middleware memberikan cara yang kuat dan fleksibel untuk memproses permintaan HTTP di Laravel, memungkinkan kamu untuk menjaga keamanan, logging, dan kontrol akses dengan lebih baik.

Top comments (0)