Belajar Mengenal Middleware Pada Framework Laravel 11

Sebelumnya di BuildWithAngga, kita telah mempelajari tentang routing dalam framework Laravel. Routing membantu kita menentukan bagaimana permintaan (request) dari pengguna diarahkan ke halaman atau logika tertentu.

Nah, setelah memahami routing, langkah selanjutnya adalah mengenal middleware di Laravel. Pada artikel ini, kita akan mempelajari apa itu middleware, mengapa penting, serta manfaatnya, dengan penjelasan yang mudah dipahami.

Apa Itu Middleware?

Middleware di Laravel adalah komponen yang berfungsi sebagai perantara antara request pengguna dan aplikasi. Middleware bertugas memeriksa dan memproses request sebelum request tersebut mencapai halaman atau logika yang dituju.

Bayangkan saat Anda masuk ke sebuah restoran:

  1. Sebelum Anda duduk, pelayan akan memeriksa apakah meja tersedia.
  2. Jika meja tersedia, Anda diperbolehkan masuk dan dilayani.
  3. Jika tidak tersedia, Anda diminta untuk menunggu atau tidak diperbolehkan masuk.

Dalam analogi ini:

  • Restoran adalah aplikasi Laravel Anda.
  • Pelayan adalah middleware.
  • Pelanggan yang ingin masuk adalah request dari pengguna.

Middleware memeriksa syarat tertentu sebelum request dapat "masuk" dan mencapai halaman (route) di aplikasi.

Mengapa Middleware Penting?

Middleware sangat penting dalam pengembangan aplikasi Laravel karena berfungsi seperti penjaga gerbang. Middleware memastikan request yang masuk ke aplikasi sudah memenuhi syarat tertentu.

Contoh kebutuhan middleware dalam pengembangan aplikasi:

  1. Autentikasi: Mengecek apakah pengguna sudah login sebelum mengakses halaman tertentu.
  2. Hak Akses: Memastikan hanya pengguna dengan peran tertentu yang bisa mengakses halaman admin.
  3. Validasi Data: Mengecek dan memfilter data sebelum diteruskan ke logika utama.

Dengan middleware, Anda dapat mengontrol arus request secara efisien dan mencegah akses tidak diinginkan pada aplikasi.

Manfaat Utama Middleware di Laravel

  1. Pengamanan: Middleware melindungi halaman atau fitur penting dari akses pengguna yang tidak berwenang.
  2. Efisiensi: Proses validasi dan pengecekan bisa dilakukan di satu tempat sebelum mencapai controller atau logika utama.
  3. Modular dan Reusable: Middleware bisa dibuat sekali dan digunakan di berbagai bagian aplikasi sesuai kebutuhan.

Middleware di Laravel bekerja layaknya seorang pelayan di restoran yang memastikan segala sesuatu berjalan sesuai prosedur. Dengan middleware, aplikasi Anda menjadi lebih aman, teratur, dan mudah dikontrol.

Setelah memahami konsep ini, langkah berikutnya adalah mempelajari bagaimana cara membuat middleware di Laravel dan mengimplementasikannya dalam proyek Anda. Tetap semangat belajar Laravel!

Praktik Membuat Middleware di Laravel untuk Website Sewa Mobil

Kali ini kita akan mempraktikkan bagaimana cara membuat middleware di Laravel dan menerapkannya pada proyek website sewa mobil. Dalam tutorial ini, kita akan memulai dari pembuatan proyek Laravel baru, membuat beberapa migration, model, dan controller, lalu menerapkan middleware untuk mengecek autentikasi pengguna.

Langkah 1: Membuat Proyek Laravel Baru

Buka terminal atau command prompt Anda, lalu jalankan perintah berikut untuk membuat proyek Laravel baru:

composer create-project laravel/laravel sewa-mobil
cd sewa-mobil
php artisan serve

Jika berhasil, buka browser dan akses http://127.0.0.1:8000 untuk memastikan proyek berjalan.

Langkah 2: Membuat Migration, Model, dan Controller

Kita akan membuat tabel cars untuk data mobil dan tabel rentals untuk data peminjaman mobil. Jalankan perintah berikut untuk membuat migration dan model:

php artisan make:model Car -m
php artisan make:model Rental -m
php artisan make:controller CarController --resource

Setelah itu, buka file migration di folder database/migrations dan tambahkan struktur tabelnya seperti ini:

Migration untuk Tabel cars

public function up()
{
    Schema::create('cars', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('brand');
        $table->integer('year');
        $table->decimal('price_per_day', 10, 2);
        $table->timestamps();
    });
}

Migration untuk Tabel rentals

public function up()
{
    Schema::create('rentals', function (Blueprint $table) {
        $table->id();
        $table->foreignId('car_id')->constrained('cars');
        $table->date('rental_date');
        $table->date('return_date');
        $table->decimal('total_price', 10, 2);
        $table->timestamps();
    });
}

Jalankan migration dengan perintah:

php artisan migrate

Langkah 3: Membuat Middleware untuk Cek Autentikasi

Selanjutnya, kita akan membuat middleware untuk memastikan pengguna hanya dapat mengakses halaman tertentu jika sudah login. Jalankan perintah berikut:

php artisan make:middleware AuthMiddleware

Buka file middleware di app/Http/Middleware/AuthMiddleware.php dan tambahkan kode berikut:

<?php

namespace App\\Http\\Middleware;

use Closure;
use Illuminate\\Http\\Request;
use Illuminate\\Support\\Facades\\Auth;

class AuthMiddleware
{
    public function handle(Request $request, Closure $next)
    {
        if (!Auth::check()) {
            return redirect('/login')->with('error', 'Silakan login terlebih dahulu.');
        }
        return $next($request);
    }
}

Langkah 4: Mendaftarkan Middleware

Buka file Kernel.php di app/Http dan daftarkan middleware yang sudah kita buat:

protected $routeMiddleware = [
    // Middleware default
    'auth' => \\App\\Http\\Middleware\\AuthMiddleware::class,
];

Langkah 5: Membuat Route dan Menggunakan Middleware

Selanjutnya, kita akan membuat route untuk halaman daftar mobil dan menerapkan middleware yang sudah dibuat. Buka file web.php di routes dan tambahkan kode berikut:

use App\\Http\\Controllers\\CarController;

Route::get('/cars', [CarController::class, 'index'])->middleware('auth');
Route::get('/login', function () {
    return "Halaman Login";
});

Langkah 6: Implementasi Controller

Buka file CarController.php di app/Http/Controllers dan tambahkan kode berikut:

<?php

namespace App\\Http\\Controllers;

use App\\Models\\Car;
use Illuminate\\Http\\Request;

class CarController extends Controller
{
    public function index()
    {
        $cars = Car::all();
        return response()->json($cars);
    }
}

Hasil Akhir

Sekarang jika Anda mengakses /cars di browser, middleware akan memeriksa apakah pengguna sudah login. Jika belum, pengguna akan diarahkan ke halaman /login.

Untuk menguji middleware, Anda bisa menambahkan mekanisme login sederhana atau mengatur manual status autentikasi pengguna.

Dengan implementasi ini, kita berhasil membuat middleware untuk mengecek autentikasi pengguna pada proyek website sewa mobil. Middleware membantu kita menjaga halaman agar hanya bisa diakses oleh pengguna yang berhak.

5 Contoh Pembuatan Custom Middleware di Laravel untuk Website Sewa Mobil

Middleware di Laravel bisa digunakan tidak hanya untuk autentikasi, tetapi juga untuk berbagai kebutuhan seperti validasi data, pengecekan parameter, atau pengaturan akses sesuai kondisi tertentu. Berikut adalah 5 contoh custom middleware beserta kode lengkapnya, tanpa berhubungan dengan proses login.

Middleware 1: Memeriksa Header API Key

Middleware ini memastikan setiap request memiliki API Key yang valid di dalam header. Ini berguna jika Anda ingin mengamankan akses API.

Membuat Middleware

php artisan make:middleware CheckApiKey

Isi Middleware

Buka file app/Http/Middleware/CheckApiKey.php:

<?php

namespace App\\Http\\Middleware;

use Closure;
use Illuminate\\Http\\Request;

class CheckApiKey
{
    public function handle(Request $request, Closure $next)
    {
        $apiKey = $request->header('x-api-key');

        if ($apiKey !== 'SECRETCARAPI123') {
            return response()->json(['message' => 'Unauthorized API Key'], 401);
        }

        return $next($request);
    }
}

Mendaftarkan Middleware

Tambahkan di app/Http/Kernel.php:

'check.api.key' => \\App\\Http\\Middleware\\CheckApiKey::class,

Penggunaan Middleware

Di file routes/web.php:

Route::get('/api/cars', [CarController::class, 'index'])->middleware('check.api.key');

Middleware 2: Cek ID Mobil Valid di Request

Middleware ini memeriksa apakah parameter car_id yang dikirim melalui request benar-benar valid.

Membuat Middleware

php artisan make:middleware ValidateCarId

Isi Middleware

Buka file app/Http/Middleware/ValidateCarId.php:

<?php

namespace App\\Http\\Middleware;

use Closure;
use Illuminate\\Http\\Request;
use App\\Models\\Car;

class ValidateCarId
{
    public function handle(Request $request, Closure $next)
    {
        $carId = $request->route('car_id');

        if (!Car::find($carId)) {
            return response()->json(['message' => 'Car ID not found'], 404);
        }

        return $next($request);
    }
}

Mendaftarkan Middleware

Tambahkan di Kernel.php:

'validate.car.id' => \\App\\Http\\Middleware\\ValidateCarId::class,

Penggunaan Middleware

Di file routes/web.php:

Route::get('/cars/{car_id}', [CarController::class, 'show'])->middleware('validate.car.id');

Middleware 3: Membatasi Akses Waktu

Middleware ini membatasi akses ke rute tertentu hanya pada jam operasional (misalnya 08:00–17:00).

Membuat Middleware

php artisan make:middleware OperationalHours

Isi Middleware

Buka file app/Http/Middleware/OperationalHours.php:

<?php

namespace App\\Http\\Middleware;

use Closure;
use Illuminate\\Http\\Request;

class OperationalHours
{
    public function handle(Request $request, Closure $next)
    {
        $currentHour = now()->format('H');

        if ($currentHour < 8 || $currentHour > 17) {
            return response()->json(['message' => 'Service only available from 08:00 to 17:00'], 403);
        }

        return $next($request);
    }
}

Mendaftarkan Middleware

Tambahkan di Kernel.php:

'operational.hours' => \\App\\Http\\Middleware\\OperationalHours::class,

Penggunaan Middleware

Di file routes/web.php:

Route::get('/cars', [CarController::class, 'index'])->middleware('operational.hours');

Middleware 4: Memeriksa Status Aktivasi Fitur

Middleware ini mengecek apakah fitur peminjaman sedang aktif atau dinonaktifkan oleh admin.

Membuat Middleware

php artisan make:middleware FeatureActive

Isi Middleware

Buka file app/Http/Middleware/FeatureActive.php:

<?php

namespace App\\Http\\Middleware;

use Closure;
use Illuminate\\Http\\Request;

class FeatureActive
{
    public function handle(Request $request, Closure $next)
    {
        $featureActive = config('features.rental_active');

        if (!$featureActive) {
            return response()->json(['message' => 'Feature is temporarily disabled'], 503);
        }

        return $next($request);
    }
}

Tambahkan Konfigurasi

Buka file config/features.php (buat file ini jika belum ada):

<?php

return [
    'rental_active' => true, // Ubah ke false untuk menonaktifkan fitur
];

Mendaftarkan Middleware

Tambahkan di Kernel.php:

'feature.active' => \\App\\Http\\Middleware\\FeatureActive::class,

Penggunaan Middleware

Di file routes/web.php:

Route::post('/rentals', [RentalController::class, 'store'])->middleware('feature.active');

Middleware 5: Menambahkan Header Tambahan di Response

Middleware ini menambahkan header tambahan untuk keperluan tracking atau informasi tambahan.

Membuat Middleware

php artisan make:middleware AddResponseHeader

Isi Middleware

Buka file app/Http/Middleware/AddResponseHeader.php:

<?php

namespace App\\Http\\Middleware;

use Closure;
use Illuminate\\Http\\Request;

class AddResponseHeader
{
    public function handle(Request $request, Closure $next)
    {
        $response = $next($request);
        $response->headers->set('X-SewaMobil-App', 'v1.0.0');
        return $response;
    }
}

Mendaftarkan Middleware

Tambahkan di Kernel.php:

'add.header' => \\App\\Http\\Middleware\\AddResponseHeader::class,

Penggunaan Middleware

Di file routes/web.php:

Route::get('/cars', [CarController::class, 'index'])->middleware('add.header');

Dengan contoh-contoh custom middleware ini, Anda bisa melihat bagaimana middleware dapat digunakan untuk berbagai keperluan seperti validasi data, pembatasan akses waktu, menambahkan header, dan lainnya. Middleware adalah alat yang sangat fleksibel dan membantu menjaga logika aplikasi Anda tetap rapi dan terstruktur.

Penerapan User Roles di Website Modern Menggunakan Custom Middleware dengan Spatie

Di banyak website modern, konsep user roles menjadi sangat penting untuk mengatur akses berdasarkan peran pengguna, seperti admin, user, atau editor. Di Laravel, kita bisa membangun sistem user roles dengan mudah menggunakan bantuan Spatie Laravel Permission dan custom middleware.

Dengan Spatie Laravel Permission, kita dapat mengelola role dan permission secara sederhana, lalu menerapkannya dengan middleware untuk membatasi akses berdasarkan role tertentu.

Instalasi Package Spatie

Langkah pertama adalah menginstal package Spatie Laravel Permission. Jalankan perintah berikut melalui terminal:

composer require spatie/laravel-permission

Setelah itu, publish file konfigurasi dan migration bawaan package ini:

php artisan vendor:publish --provider="Spatie\\Permission\\PermissionServiceProvider"
php artisan migrate

Setup Model User

Tambahkan trait HasRoles pada model User agar model tersebut dapat menggunakan fitur role dari Spatie.

Buka file app/Models/User.php dan ubah seperti berikut:

<?php

namespace App\\Models;

use Illuminate\\Foundation\\Auth\\User as Authenticatable;
use Spatie\\Permission\\Traits\\HasRoles;

class User extends Authenticatable
{
    use HasRoles;

    protected $fillable = [
        'name',
        'email',
        'password',
    ];
}

Menambahkan Role dan Permission

Buat command seed untuk menambahkan role awal ke dalam database. Misalnya, kita akan membuat admin dan user. Buka file database/seeders/DatabaseSeeder.php dan tambahkan:

use Spatie\\Permission\\Models\\Role;

public function run()
{
    Role::create(['name' => 'admin']);
    Role::create(['name' => 'user']);
}

Jalankan command berikut untuk menjalankan seeder:

php artisan db:seed

Membuat Middleware Custom untuk Role

Buat middleware baru untuk memeriksa role pengguna. Jalankan perintah:

php artisan make:middleware RoleMiddleware

Buka file app/Http/Middleware/RoleMiddleware.php dan tambahkan logika berikut:

<?php

namespace App\\Http\\Middleware;

use Closure;
use Illuminate\\Http\\Request;
use Illuminate\\Support\\Facades\\Auth;

class RoleMiddleware
{
    public function handle(Request $request, Closure $next, $role)
    {
        if (!Auth::check() || !$request->user()->hasRole($role)) {
            return response()->json(['message' => 'Access Denied. Role not authorized.'], 403);
        }

        return $next($request);
    }
}

Mendaftarkan Middleware

Buka file app/Http/Kernel.php dan tambahkan middleware baru di routeMiddleware:

'role' => \\App\\Http\\Middleware\\RoleMiddleware::class,

Menggunakan Middleware di Route

Sekarang kita bisa menggunakan middleware ini di route untuk membatasi akses berdasarkan role pengguna. Misalnya, hanya admin yang bisa mengakses halaman dashboard.

Tambahkan kode berikut di file routes/web.php:

use App\\Http\\Controllers\\AdminController;

Route::get('/admin/dashboard', [AdminController::class, 'index'])->middleware('role:admin');

Route::get('/user/profile', function () {
    return 'User Profile Page';
})->middleware('role:user');

Menetapkan Role pada Pengguna

Untuk menetapkan role pada pengguna, Anda bisa melakukannya langsung melalui kode atau Tinker:

use App\\Models\\User;

$user = User::find(1); // Gantilah ID dengan user yang ingin ditetapkan
$user->assignRole('admin');

Hasil Akhir

Dengan middleware berbasis role, setiap request yang menuju halaman tertentu akan diperiksa berdasarkan peran pengguna. Jika pengguna tidak memiliki role yang sesuai, akses akan ditolak dengan pesan error 403 Forbidden.

Middleware ini sangat fleksibel dan bisa dikombinasikan dengan permission untuk pengaturan yang lebih spesifik. Spatie Laravel Permission adalah solusi praktis untuk membangun sistem user roles di Laravel tanpa harus membuat logika dari nol.

Passing Parameters ke Middleware di Laravel

Middleware di Laravel mendukung parameter tambahan yang bisa kita gunakan untuk memperluas fungsionalitas middleware. Dengan parameter ini, middleware dapat menjadi lebih fleksibel, seperti membatasi akses berdasarkan role, level, status, atau kondisi lainnya. Parameter ini akan dikirim langsung melalui route ketika middleware diterapkan.

Contoh: Middleware untuk Memeriksa Role dan Level

Dalam contoh ini, kita akan membuat middleware yang memeriksa apakah pengguna memiliki role dan level tertentu untuk mengakses halaman.

Membuat Middleware

Jalankan perintah berikut untuk membuat middleware baru:

php artisan make:middleware RoleLevelMiddleware

Implementasi Middleware

Buka file app/Http/Middleware/RoleLevelMiddleware.php dan tambahkan kode berikut:

<?php

namespace App\\Http\\Middleware;

use Closure;
use Illuminate\\Http\\Request;

class RoleLevelMiddleware
{
    public function handle(Request $request, Closure $next, $role, $level)
    {
        $user = $request->user();

        // Cek apakah user memiliki role dan level yang sesuai
        if (!$user || !$user->hasRole($role) || $user->level != $level) {
            return response()->json([
                'message' => 'Access Denied. Role or level does not match.'
            ], 403);
        }

        return $next($request);
    }
}

Penjelasan:

  • Middleware ini menerima dua parameter: $role dan $level.
  • Parameter role diperiksa menggunakan metode hasRole() yang disediakan oleh package seperti Spatie atau logika Anda sendiri.
  • Parameter level diperiksa dengan properti level yang ada pada model User.
  • Jika kondisi tidak terpenuhi, middleware akan mengembalikan response dengan kode 403 Forbidden.

Mendaftarkan Middleware

Daftarkan middleware di file app/Http/Kernel.php di bagian $routeMiddleware:

protected $routeMiddleware = [
    // Middleware lain
    'role.level' => \\App\\Http\\Middleware\\RoleLevelMiddleware::class,
];

Menggunakan Middleware di Route

Terapkan middleware dengan parameter tambahan di file routes/web.php:

use App\\Http\\Controllers\\AdminController;

Route::get('/admin/dashboard', [AdminController::class, 'index'])
    ->middleware('role.level:admin,2');

Route::get('/editor/dashboard', function () {
    return 'Welcome Editor!';
})->middleware('role.level:editor,1');

Penjelasan:

  • Middleware role.level dipanggil dengan dua parameter: role dan level.
  • Route /admin/dashboard hanya bisa diakses oleh pengguna dengan role admin dan level 2.
  • Route /editor/dashboard hanya bisa diakses oleh pengguna dengan role editor dan level 1.

Contoh Logika pada Model User

Agar middleware ini berjalan, pastikan model User memiliki atribut level dan metode hasRole(). Berikut adalah contoh implementasinya pada model app/Models/User.php:

<?php

namespace App\\Models;

use Illuminate\\Foundation\\Auth\\User as Authenticatable;

class User extends Authenticatable
{
    protected $fillable = ['name', 'email', 'password', 'level'];

    // Contoh hasRole sederhana
    public function hasRole($role)
    {
        return $this->role === $role;
    }
}

Penjelasan:

  • Kolom role menyimpan peran pengguna seperti admin, editor, atau user.
  • Kolom level menyimpan level pengguna seperti 1, 2, dst.
  • Metode hasRole() mengecek apakah pengguna memiliki role tertentu.

Hasil Akhir

Ketika pengguna mengakses route dengan middleware role.level, middleware akan memeriksa:

  1. Apakah pengguna sudah login.
  2. Apakah role pengguna sesuai dengan parameter.
  3. Apakah level pengguna sesuai dengan parameter.

Jika salah satu kondisi tidak terpenuhi, middleware akan mengembalikan response:

{
    "message": "Access Denied. Role or level does not match."
}

Jika semua kondisi terpenuhi, request akan dilanjutkan dan halaman yang diminta akan ditampilkan.

Dengan fitur ini, middleware menjadi jauh lebih fleksibel dan dapat digunakan untuk mengatur akses berdasarkan berbagai kondisi. Anda dapat menambahkan parameter tambahan sesuai kebutuhan, seperti status pengguna, subscription, atau kondisi lain yang relevan dengan proyek Anda.

Global Middleware vs Route Middleware di Laravel

Dalam Laravel, middleware dapat dikategorikan menjadi Global Middleware dan Route Middleware. Pemahaman ini penting karena menentukan kapan middleware akan dieksekusi.

Global Middleware

Global Middleware adalah middleware yang akan dijalankan untuk setiap request yang masuk ke aplikasi Laravel, baik itu request untuk route API, web, atau lainnya. Global middleware biasanya digunakan untuk tugas-tugas yang bersifat umum, seperti:

  • Menambahkan header khusus ke setiap response
  • Melakukan logging setiap request
  • Menangani CORS (Cross-Origin Resource Sharing)

Cara Menambahkan Global Middleware

Untuk menambahkan middleware global, Anda harus mendaftarkannya di bagian $middleware di file app/Http/Kernel.php.

Contoh Middleware: Menambahkan Header Tambahan di Setiap Response

Buat middleware baru dengan perintah:

php artisan make:middleware AddGlobalHeader

Buka file app/Http/Middleware/AddGlobalHeader.php dan tambahkan kode berikut:

<?php

namespace App\\Http\\Middleware;

use Closure;
use Illuminate\\Http\\Request;

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

        // Menambahkan header tambahan ke setiap response
        $response->headers->set('X-App-Version', '1.0.0');
        $response->headers->set('X-Developer', 'BuildWithAngga');

        return $response;
    }
}

Mendaftarkan di Kernel.php

Buka file app/Http/Kernel.php dan tambahkan middleware di array $middleware:

protected $middleware = [
    \\App\\Http\\Middleware\\AddGlobalHeader::class,
];

Dengan ini, setiap response yang dihasilkan oleh aplikasi Anda akan memiliki header tambahan seperti:

X-App-Version: 1.0.0
X-Developer: BuildWithAngga

Global middleware sangat cocok untuk tugas-tugas yang berlaku di seluruh aplikasi.

Route Middleware

Route Middleware adalah middleware yang hanya dijalankan pada route tertentu yang Anda tentukan. Route middleware memungkinkan Anda untuk mengontrol logika middleware secara lebih spesifik pada request yang menuju ke route tertentu.

Cara Menambahkan Route Middleware

Middleware ini didaftarkan di bagian $routeMiddleware di file app/Http/Kernel.php dan diterapkan langsung di file routes.

Contoh Middleware: Membatasi Akses Berdasarkan Parameter Request

Buat middleware baru dengan perintah:

php artisan make:middleware CheckRequestHeader

Buka file app/Http/Middleware/CheckRequestHeader.php dan tambahkan logika berikut:

<?php

namespace App\\Http\\Middleware;

use Closure;
use Illuminate\\Http\\Request;

class CheckRequestHeader
{
    public function handle(Request $request, Closure $next)
    {
        // Periksa apakah request memiliki header khusus
        if (!$request->hasHeader('X-Secret-Key') || $request->header('X-Secret-Key') !== 'SECRETCARAPI123') {
            return response()->json(['message' => 'Unauthorized. Missing or invalid header.'], 401);
        }

        return $next($request);
    }
}

Mendaftarkan Middleware di Kernel.php

Tambahkan middleware di array $routeMiddleware:

protected $routeMiddleware = [
    'check.header' => \\App\\Http\\Middleware\\CheckRequestHeader::class,
];

Menggunakan Middleware di Route

Di file routes/web.php, middleware ini dapat diterapkan pada route tertentu:

use App\\Http\\Controllers\\CarController;

Route::get('/api/cars', [CarController::class, 'index'])->middleware('check.header');

Dalam contoh ini:

  • Middleware check.header hanya dijalankan ketika route /api/cars dipanggil.
  • Jika request tidak memiliki header X-Secret-Key atau nilainya salah, middleware akan menolak akses dan mengembalikan 401 Unauthorized.

Contoh Response Jika Header Salah

{
    "message": "Unauthorized. Missing or invalid header."
}

Perbedaan Utama

  • Global Middleware: Dieksekusi untuk setiap request yang masuk ke aplikasi, cocok untuk proses yang berlaku secara umum seperti logging, CORS, atau header tambahan.
  • Route Middleware: Hanya dijalankan pada route yang spesifik, cocok untuk logika yang lebih terfokus seperti validasi header atau pengecekan kondisi tertentu.

Dengan memahami perbedaan ini, Anda dapat menggunakan middleware secara lebih efisien sesuai kebutuhan proyek. Global middleware untuk proses umum dan route middleware untuk kontrol akses yang lebih spesifik di level route.

Penutup

Middleware adalah salah satu fitur penting dalam Laravel yang memungkinkan kita untuk mengontrol alur request dan response pada aplikasi. Dengan pemahaman tentang Global Middleware dan Route Middleware, serta kemampuan untuk membuat custom middleware, Anda dapat membangun aplikasi yang lebih terstruktur, aman, dan efisien.

Bagi web developer pemula yang ingin mendalami Laravel lebih jauh, belajar bersama mentor expert di BuildWithAngga adalah pilihan yang tepat. Anda akan mendapatkan benefit luar biasa seperti:

  • Akses materi seumur hidup yang bisa dipelajari kapan saja.
  • Konsultasi karir untuk membantu Anda memulai atau meningkatkan karir sebagai web developer.
  • Panduan membangun portfolio berkualitas yang akan membuat Anda lebih mudah diterima di dunia kerja.
  • a

Jangan tunggu lebih lama, mulailah perjalanan belajar Anda sekarang dan tingkatkan peluang untuk mendapatkan pekerjaan impian sebagai web developer. Bersama BuildWithAngga, Anda tidak hanya belajar coding, tetapi juga siap menjadi developer profesional dengan bekal ilmu dan pengalaman yang tepat! 🚀