; Memahami Middleware Guest dan Throttle - Blog Rudi Kurniawan

Blog Laravel Indonesia

Belajar Laravel dengan Mudah dan Menyenangkan

Memahami Middleware Guest dan Throttle
12-07-2025 | Admin User Programming 28 x dilihat

Memahami Middleware Guest dan Throttle

Apa Itu Middleware Guest dan Throttle?

  • Guest: Middleware bawaan Laravel yang memastikan hanya pengguna yang belum login (tamu) yang dapat mengakses rute. Jika pengguna sudah login, mereka akan dialihkan.
  • Throttle: Middleware bawaan Laravel yang membatasi jumlah permintaan ke rute dalam waktu tertentu, berguna untuk mencegah penyalahgunaan seperti serangan spam.

Hubungan dengan Rute

Middleware guest digunakan untuk rute seperti halaman login atau registrasi, sedangkan throttle digunakan untuk membatasi akses ke rute yang rentan, seperti formulir atau API.

Tutorial Menggunakan Middleware Guest dan Throttle

Berikut langkah-langkah menggunakan middleware guest dan throttle untuk rute tertentu.

Persiapan

Pastikan kamu sudah:

  • Menginstal Laravel dan mengatur koneksi database di file .env.
  • Mengatur autentikasi (misalnya, menggunakan Laravel Breeze atau php artisan make:auth).
  • Membuat controller atau view sederhana (misalnya, untuk halaman login atau formulir).

Langkah-Langkah

  1. Middleware Guest
    Middleware guest memastikan hanya pengguna yang belum login yang bisa mengakses rute. Tambahkan di routes/web.php:

    Route::get('/login', function () {
        return view('login');
    })->middleware('guest');
    

    Penjelasan:

    • Jika pengguna belum login, mereka bisa mengakses /login dan melihat halaman login.
    • Jika sudah login, mereka akan dialihkan ke halaman lain (default: /home).
    • Contoh view (resources/views/login.blade.php):
      <!DOCTYPE html>
      <html lang="id">
      <head>
          <title>Login</title>
          <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
      </head>
      <body class="bg-gray-100 p-6">
          <h1 class="text-2xl font-bold">Halaman Login</h1>
          <p>Silakan login untuk melanjutkan.</p>
      </body>
      </html>
      
  2. Middleware Throttle
    Middleware throttle membatasi jumlah permintaan. Tambahkan di routes/web.php:

    use App\Http\Controllers\PostController;
    
    Route::post('/posts', [PostController::class, 'store'])->middleware('throttle:10,1');
    

    Penjelasan:

    • throttle:10,1: Membatasi 10 permintaan per menit ke rute /posts.
    • Jika batas terlampaui, pengguna mendapat respons HTTP 429 (Too Many Requests).
    • Contoh controller (PostController.php):
      <?php
      
      namespace App\Http\Controllers;
      
      use App\Models\Post;
      use Illuminate\Http\Request;
      
      class PostController extends Controller
      {
          public function store(Request $request)
          {
              Post::create([
                  'title' => $request->title,
                  'content' => $request->content,
              ]);
              return redirect('/posts');
          }
      }
      
  3. Jalankan Server
    Jalankan server Laravel dengan:

    php artisan serve
    

    Uji rute:

    • Buka http://localhost:8000/login:
      • Jika belum login, lihat halaman login.
      • Jika sudah login, diarahkan ke /home.
    • Kirim lebih dari 10 permintaan POST ke /posts dalam 1 menit (misalnya, via Postman) → Muncul error 429 setelah batas terlampaui.

Mengapa Guest dan Throttle Penting?

  • Guest: Memastikan halaman seperti login atau registrasi hanya diakses oleh tamu, meningkatkan pengalaman pengguna.
  • Throttle: Melindungi aplikasi dari penyalahgunaan, seperti spam atau serangan brute force.
  • Efisiensi: Middleware bawaan ini siap pakai tanpa perlu kode kustom.

Contoh Hasil

  • Guest: Pengguna yang sudah login mencoba akses /login → Dialihkan ke /home.
  • Throttle: Mengirim 11 permintaan POST ke /posts dalam 1 menit → Permintaan ke-11 ditolak dengan error 429.

Langkah Selanjutnya

  • Sesuaikan pengalihan guest di app/Http/Middleware/RedirectIfAuthenticated.php.
  • Konfigurasi throttle dengan batas berbeda (misalnya, throttle:60,1 untuk 60 permintaan per menit).
  • Baca dokumentasi Middleware untuk fitur seperti middleware groups atau membuat middleware kustom.

Selamat! Kamu sudah menguasai middleware guest dan throttle di Laravel untuk mengamankan dan mengontrol akses rute!

Share this

Facebook Whatsapp