Programming Tutorial Laravel Web Development 25 July 2025

Mengenal Middleware di Laravel: Filter, Proteksi, dan Automasi Request

Mengenal Middleware di Laravel: Filter, Proteksi, dan Automasi Request
Bagikan:

Pernahkah kamu bertanya-tanya bagaimana Laravel bisa memfilter, mengamankan, atau bahkan memodifikasi request sebelum sampai ke Controller? Jawabannya ada pada konsep middleware. Middleware di Laravel ibarat “penjaga gerbang” yang memastikan setiap request yang masuk sudah sesuai aturan sebelum diproses lebih lanjut.

Bayangkan kamu membangun aplikasi dengan fitur login, role-based access, atau rate limiting. Semua itu bisa di-handle dengan elegan menggunakan middleware. Dengan pendekatan ini, kode menjadi lebih modular, reusable, dan mudah di-maintain.

Menyiapkan Lingkungan Pengembangan

Sebelum praktik, pastikan environment Laravel sudah siap:

  • PHP >= 8.1
  • Composer
  • Laravel 10.x
  • Code editor (VSCode, PHPStorm, dll)

Instalasi project baru (opsional):

composer create-project laravel/laravel laravel-middleware-demo

Struktur folder utama yang relevan:

laravel-middleware-demo/
├── app/
│   └── Http/
│       └── Middleware/
├── routes/
│   └── web.php
Konsep Dasar Middleware

Middleware adalah class yang memproses HTTP request sebelum atau sesudah mencapai Controller. Fungsinya bisa bermacam-macam: autentikasi, logging, CORS, validasi, hingga manipulasi response.

Keuntungan menggunakan middleware:

  • Memisahkan concern (autentikasi, logging, dsb) dari logic utama
  • Mudah di-reuse di banyak route
  • Mendukung chaining dan priority
  • Bisa custom sesuai kebutuhan aplikasi
Membuat Middleware Kustom

Laravel menyediakan artisan command untuk membuat middleware:

php artisan make:middleware CheckUserRole

File baru akan muncul di app/Http/Middleware/CheckUserRole.php.

Contoh implementasi sederhana:

<?php
namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class CheckUserRole
{
    public function handle(Request $request, Closure $next, $role)
    {
        // Cek apakah user punya role yang sesuai
        if (!$request->user() || $request->user()->role !== $role) {
            // Redirect atau abort jika tidak sesuai
            return redirect('/login');
        }
        return $next($request);
    }
}
Mendaftarkan dan Menggunakan Middleware

Agar middleware bisa digunakan, daftarkan di app/Http/Kernel.php:

protected $routeMiddleware = [
    // ...existing code...
    'check.role' => \App\Http\Middleware\CheckUserRole::class,
];

Gunakan di route:

Route::get('/admin', function () {
    return 'Admin Page';
})->middleware('check.role:admin');
Middleware Bawaan Laravel

Laravel sudah menyediakan banyak middleware siap pakai, seperti:

  • auth (autentikasi user)
  • guest (hanya untuk guest)
  • verified (email verification)
  • throttle (rate limiting)
  • cors (CORS handling)

Contoh penggunaan rate limiting:

Route::middleware(['throttle:10,1'])->group(function () {
    Route::get('/api/data', function () {
        return ['data' => 'Contoh data'];
    });
});
Best Practices Middleware
  • Single Responsibility: Satu middleware hanya untuk satu concern
  • Gunakan route group untuk chaining
  • Manfaatkan parameter middleware untuk fleksibilitas
  • Error handling: Return response yang jelas jika request tidak lolos
  • Testing: Uji middleware secara unit test
Debugging dan Troubleshooting

Tips debugging middleware:

  • Gunakan dd() atau dump() di dalam method handle()
  • Cek urutan middleware di Kernel.php
  • Perhatikan return value: harus response atau $next($request)
  • Cek log di storage/logs/laravel.log
Advanced Topics
  • Global vs Route Middleware: Global aktif di semua request, route hanya di route tertentu
  • Terminable Middleware: Bisa eksekusi logic setelah response dikirim (method terminate())
  • Middleware Priority: Atur urutan eksekusi di Kernel.php
  • Custom Response: Return JSON, redirect, atau custom response sesuai kebutuhan

Contoh terminable middleware:

public function terminate($request, $response)
{
    // Logging atau cleanup setelah response
}
Sumber Belajar dan Referensi

Middleware adalah salah satu fitur powerful di Laravel yang membuat aplikasi lebih aman, scalable, dan maintainable. Dengan memahami konsep, implementasi, dan best practices di atas, kamu bisa membangun aplikasi yang lebih robust dan mudah dikembangkan. Yuk, eksplorasi middleware di project Laravel-mu!