laravel middleware | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: laravel middleware

Sunday, April 12, 2026

laravel middleware

Artikel 22 dari 50 Seri Belajar Laravel Intermediate

Middleware di Laravel:
Penjaga Gerbang Aplikasimu

Pelajari cara middleware Laravel bekerja sebagai lapisan keamanan request HTTP — cocok dipelajari setelah kamu menguasai autentikasi Laravel Breeze.

⏱ 8 menit
Estimasi Baca
🎯 Intermediate
Level
2025
Updated

Pernah nggak kamu ngebayangin kalau aplikasi web itu seperti sebuah gedung kantor mewah? Setiap orang yang mau masuk harus melewati satpam di lobby dulu — dicek ID-nya, diperiksa tasnya, dan baru boleh lanjut ke lantai yang dituju. Nah, dalam dunia Laravel, satpam itu namanya Middleware. Dan kalau kamu sudah belajar autentikasi Laravel Breeze di artikel sebelumnya, kamu pasti sudah "memakai" middleware tanpa sadar! Di artikel ke-22 dari seri 50 Artikel Belajar Laravel ini, kita akan bongkar habis cara kerja middleware — dari konsep dasar sampai bikin middleware custom sendiri. Siap jadi kepala satpam aplikasimu?

📖 Definisi Middleware Laravel

Middleware adalah lapisan (layer) yang menangani HTTP request sebelum request tersebut sampai ke controller, atau menangani HTTP response sebelum dikirim ke browser. Middleware berfungsi sebagai filter yang bisa memeriksa, memodifikasi, atau bahkan menolak request masuk berdasarkan kondisi tertentu.

Formula: Request → [Middleware 1] → [Middleware 2] → Controller → [Middleware N] → Response

🚪 Apa Itu Middleware? Analoginya Bikin Ngerti Seketika

Bayangkan kamu pesan tiket konser online. Sebelum kamu bisa masuk ke venue, ada beberapa pos pemeriksaan:

  1. Pos 1 — Security Gate: Cek apakah tiketmu valid (autentikasi)
  2. Pos 2 — ID Check: Apakah kamu cukup umur untuk masuk area VIP? (otorisasi)
  3. Pos 3 — Bag Check: Apakah kamu bawa barang terlarang? (validasi/filtering)

Nah, setiap "pos pemeriksaan" itu adalah middleware dalam aplikasi Laravel kamu. Dan tahukah kamu? Ketika kamu menginstal autentikasi Laravel Breeze, Laravel secara otomatis mendaftarkan middleware auth untuk melindungi route-route yang membutuhkan login!

🔥 Fakta Menarik

Laravel sendiri sudah menyertakan lebih dari 10 middleware bawaan, termasuk EncryptCookies, VerifyCsrfToken, dan TrimStrings yang secara otomatis aktif untuk setiap request! Tanpa kamu sadari, setiap request sudah melewati middleware sejak hari pertama kamu install Laravel.

⚙️ Middleware Bawaan Laravel: Yang Sudah Kerja di Balik Layar

Sebelum belajar bikin middleware sendiri, kamu perlu tahu middleware apa saja yang sudah Laravel sediakan. Middleware ini didaftarkan di file app/Http/Kernel.php.

Middleware Alias / Key Fungsi
Authenticate auth Memastikan user sudah login
RedirectIfAuthenticated guest Redirect user yang sudah login (misalnya dari halaman login)
VerifyCsrfToken csrf Melindungi dari serangan CSRF
TrimStrings Global Otomatis trim spasi dari input form
ThrottleRequests throttle Membatasi jumlah request (rate limiting)
💡 Tips

Kalau kamu menggunakan autentikasi Laravel Breeze, middleware auth sudah otomatis terpasang di route-route yang dilindungi seperti /dashboard. Cek file routes/web.php-mu dan kamu akan melihat ->middleware(['auth']) sudah ada di sana!

🛠️ Cara Membuat Middleware Custom di Laravel: Step-by-Step

Sekarang bagian yang paling seru — membuat middleware sendiri! Misalnya kita mau bikin middleware yang memastikan user hanya bisa akses halaman tertentu kalau statusnya "aktif". Ikuti langkah-langkah berikut:

1

Generate Middleware via Artisan

Jalankan perintah artisan berikut di terminal kamu untuk membuat file middleware baru:

# Buat middleware baru
php artisan make:middleware CheckUserStatus

File baru akan muncul di: app/Http/Middleware/CheckUserStatus.php

2

Tulis Logika Middleware

Buka file yang baru dibuat dan edit method handle():

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class CheckUserStatus
{
    public function handle(Request $request, Closure $next)
    {
        // Cek apakah user sudah login DAN statusnya aktif
        if (auth()->check() && auth()->user()->status !== 'active') {
            return redirect('/akun-dinonaktifkan')
                ->with('error', 'Akun kamu tidak aktif.');
        }

        return $next($request); // Lanjutkan request
    }
}
3

Daftarkan Middleware di Kernel

Buka app/Http/Kernel.php dan tambahkan middleware ke array $routeMiddleware:

// app/Http/Kernel.php
protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    'check.status' => \App\Http\Middleware\CheckUserStatus::class, // ← tambahkan ini
    // ... middleware lainnya
];
4

Gunakan Middleware di Route

Sekarang terapkan middleware ke route yang ingin kamu lindungi. Kamu bisa gunakan bersamaan dengan middleware auth dari autentikasi Laravel Breeze:

// routes/web.php

// Cara 1: Langsung di route
Route::get('/dashboard', [DashboardController::class, 'index'])
    ->middleware(['auth', 'check.status']);

// Cara 2: Dalam Route Group
Route::middleware(['auth', 'check.status'])->group(function () {
    Route::get('/dashboard', [DashboardController::class, 'index']);
    Route::get('/profile', [ProfileController::class, 'show']);
});
⚡ Insight Penting

Middleware dieksekusi secara berurutan sesuai urutan array. Artinya, jika kamu mendaftarkan ['auth', 'check.status'], Laravel akan cek autentikasi dulu. Kalau user belum login, middleware auth akan langsung redirect — dan check.status tidak akan dieksekusi sama sekali. Ini efisien dan aman!

🔄 Before vs After Middleware: Kapan Digunakan?

Middleware Laravel bisa berjalan dalam dua mode: sebelum request sampai ke controller, atau setelah response dikirim. Perbedaannya ada di posisi kode dalam method handle():

🔍 Before vs After Middleware — Perbandingan
⬅️ Before Middleware

Kode dieksekusi sebelum $next($request) dipanggil. Request belum diproses controller.

public function handle($request, Closure $next)
{
  // KODE SEBELUM REQUEST
  Log::info('Request masuk!');

  return $next($request);
}

Contoh penggunaan: Cek autentikasi, validasi role, logging request

➡️ After Middleware

Kode dieksekusi setelah $next($request) dipanggil. Response sudah dibuat controller.

public function handle($request, Closure $next)
{
  $response = $next($request);

  // KODE SETELAH RESPONSE
  $response->header('X-Custom', 'yes');

  return $response;
}

Contoh penggunaan: Tambah response header, logging response time

⚠️ Perhatian

Jangan terlalu banyak mendaftarkan middleware ke route global (di $middleware), karena itu akan dieksekusi untuk setiap request, termasuk request ke file statis. Sebisa mungkin, gunakan $routeMiddleware dan terapkan hanya ke route yang membutuhkannya.

💡 Tips Pro: Middleware dengan Parameter

Kamu bisa membuat middleware yang menerima parameter dinamis! Ini berguna untuk cek role user secara fleksibel:

// Di route:
Route::get('/admin')->middleware('role:admin');

// Di middleware handle():
public function handle($request, Closure $next, $role)
{
  if (!auth()->user()->hasRole($role)) {
    abort(403, 'Akses ditolak!');
  }
  return $next($request);
}

🎯 Kesimpulan

Selamat! Sekarang kamu sudah paham bahwa middleware di Laravel bukan sekadar istilah teknis yang terkesan menyeramkan. Middleware adalah "satpam" yang bekerja tanpa lelah melindungi aplikasimu. Berikut poin-poin kunci yang harus kamu ingat:

  • Middleware adalah lapisan filter yang memproses request sebelum/sesudah controller
  • Laravel sudah menyediakan middleware bawaan, termasuk yang digunakan autentikasi Laravel Breeze
  • Membuat middleware custom cukup 4 langkah: generate → tulis logika → daftar di Kernel → pakai di route
  • Middleware bisa dieksekusi sebelum (before) atau sesudah (after) request diproses
  • Middleware bisa menerima parameter untuk logika yang lebih dinamis

Di artikel berikutnya (Artikel 23), kita akan naik level ke Gates dan Policies — sistem otorisasi Laravel yang lebih granular. Kalau middleware adalah satpam di gerbang utama, Gates & Policies adalah sistem akses di setiap ruangan dalam gedung!

Artikel ini bagian dari:
📚 Seri 50 Artikel Belajar Laravel — Panduan lengkap dari dasar sampai mahir untuk mahasiswa informatika yang ingin jadi web developer profesional.

Artikel ini membantu? Tinggalkan komentar, share ke teman-temanmu, dan jangan lupa subscribe agar nggak ketinggalan artikel Laravel berikutnya! 🚀

#Laravel #PHP #Middleware #WebDevelopment #AutentikasiLaravel #BelajarLaravel #Tutorial

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux