Cara Debug Middleware Laravel yang Tidak Jalan
Middleware Laravel seharusnya menjadi penjaga di depan controller. Saat middleware terasa "tidak jalan", gejalanya bisa bermacam-macam: route yang seharusnya terlindungi malah bisa diakses bebas, redirect login tidak pernah terjadi, atau logika pengecekan role terasa diabaikan.
Masalah ini hampir selalu ada di salah satu dari empat titik: middleware tidak terpasang ke route, alias middleware salah, logic handle() terlalu longgar, atau cache route/config belum sinkron setelah refactor.
Kapan Masalah Ini Biasanya Muncul?
- Route admin tetap bisa diakses tanpa login
- Middleware custom sudah dibuat, tetapi method
handle()terasa tidak pernah dipanggil - Alias middleware seperti
adminatauroleselalu gagal dipakai - Route group seolah mengabaikan middleware yang sudah didefinisikan
- Setelah refactor route, behavior middleware berubah aneh
Penyebab Paling Umum
1. Middleware Tidak Benar-Benar Dipasang ke Route
Kalau route tidak memakai ->middleware('auth') atau group yang relevan, middleware memang tidak akan pernah jalan.
2. Alias Middleware Salah atau Belum Didaftarkan
Di Laravel 11+, alias middleware custom biasanya didaftarkan di bootstrap/app.php:
Kalau alias admin belum ada, route ->middleware('admin') tidak akan bekerja seperti yang kamu harapkan.
3. Logic di handle() Selalu Meloloskan Request
Contoh:
Secara teknis middleware "jalan", tetapi tidak melakukan pengecekan apa pun.
4. Route yang Diuji Ternyata Bukan Route yang Kamu Kira
Kadang ada route lain yang bentrok atau prefix berbeda, sehingga request masuk ke route lain yang tidak memakai middleware.
5. Cache Route atau Config Belum Dibersihkan
Setelah rename middleware, alias, atau group route, cache lama bisa membuat hasil debug terasa membingungkan.
Langkah Diagnosis
- Jalankan
php artisan route:listdan pastikan route target benar-benar memakai middleware yang kamu kira. - Cek alias middleware di
bootstrap/app.php. - Tambahkan log sementara di awal method
handle()untuk memastikan middleware benar-benar terpanggil. - Periksa apakah route berada di file yang benar:
routes/web.phpuntuk halaman webroutes/api.phpuntuk endpoint API
- Bersihkan cache setelah perubahan besar di routing atau middleware.
Sebelum mengutak-atik isi handle(), pastikan dulu middleware benar-benar terpasang di route yang sedang kamu uji.
Langkah Fix
1. Pasang Middleware ke Route atau Group
2. Daftarkan Alias dengan Benar
3. Tulis Logic handle() yang Tegas
4. Tambahkan Logging Sementara
5. Bersihkan Cache
Contoh Sebelum dan Sesudah
Sebelum
Middleware custom sudah dibuat, tetapi route belum memakainya sama sekali.
Sesudah
Error Umum
Middleware Tidak Pernah Dipanggil
Biasanya route belum memakai middleware itu, atau request masuk ke route yang berbeda.
Middleware Dipanggil, Tapi User Tetap Bisa Lolos
Periksa logic if di handle(). Sering kali pengecekan role, guard, atau kondisi login tidak setegas yang dibayangkan.
Alias Middleware Tidak Dikenali
Biasanya alias belum didaftarkan, salah eja, atau cache aplikasi belum dibersihkan.
Pencegahan
- Setelah menambah middleware, cek hasil
route:list. - Pakai nama alias yang pendek dan konsisten, misalnya
adminataurole. - Jangan biarkan
handle()langsungreturn $next($request)sebelum pengecekan penting. - Setelah refactor routing, jalankan
optimize:clear. - Tulis feature test untuk memastikan route benar-benar terlindungi.
Bacaan Terkait
- Middleware
- Otentikasi Laravel
- Sanctum 401 Unauthorized: Checklist Lengkap
- Kenapa Validation Error Tidak Muncul di Laravel Blade?
FAQ
Kenapa middleware saya jalan di browser, tetapi tidak di Postman?
Kemungkinan route web dan route API memakai guard atau mekanisme auth yang berbeda.
Apakah middleware custom wajib didaftarkan?
Kalau ingin dipakai lewat alias seperti ->middleware('admin'), iya, alias-nya harus didaftarkan lebih dulu.
Perlukah pakai dd() di middleware saat debug?
Boleh untuk cek cepat, tetapi logging biasanya lebih aman karena tidak memutus alur request secara total.