Share

Di framework Laravel, akan ada fitur middleware. Kita mungkin sering berkeinginan untuk mem-filter permintaan dari HTTP yang masuk ke aplikasi kita. Sesuai dengan namanya middleware,  bertindak sebagai penengah antara permintaan dan respon. Misalnya aplikasi yang kita buat apakah diverifikasi atau tidak, jika pengguna sudah mendapatkan otoritasi apakah diarahkan ke suatu halaman atau tetap di halaman yang sama.

Middleware adalah sebuah class khusus yang berperan sebagai penengah antara permintaan yang masuk dengan controller yang akan dituju. Pada Laravel sebelumnya (di bawah versi 4), fitur ini dinamakan filter.

Membuat Middleware

Middleware dapat dibuat dengan menggunakan artisan :

Contoh di atas, kita membuat middleware dengan nama TestMiddleware. Kemudian untuk melihat hasil dari middleware yang telah dibuat, bisa dibuka di folder : /app/http/Middleware/ , isinya seperti ini :

Register Middleware

Setiap middleware yang dibuat harus di-register terlebih dahulu sebelum digunakan. Ada dua tipe middleware di Laravel :

  1. Global Middleware : akan bekerja pada semua permintaan dari HTTP pada aplikasi.
  2. Route Middleware : akan bekerja pada route yang ditentukan.

Middleware dapat di-register di /app/Http/Kernel.php. Pada file ini akan muncul dua jenis middleware : $middleware (digunakan untuk Global Middleware) dan $routeMiddleware (digunakan untuk Route Middleware). Untuk register di global, tambahkan middleware pada akhir properti. Sedangkan pada route, tambahkan key dan value pada properti middleware.

Sebagai contoh dari middleware yang dibuat sebelumnya, kita akan register :

Global :

Route :

Parameter pada middleware

Kita bisa menggunakan parameter pada middleware, misalnya aplikasi membagi akses pada pengguna seperti admin dan  user. Kita bisa memanfaatkan parameter di middleware untuk hal ini.  Untuk menambahkan parameter bisa dilakukan dengan menambahkan argumen baru setelah argumen $next. Misalnya pada middleware yang telah kita buat tadi :

Kemudian buat controller baru dengan nama TestController dengan menggunakan artisan :

Untuk controller yang telah dibuat bisa dibuka di /app/Http/Controller/.  Tambahkan function baru, seperti di bawah ini :

Kemudian tambahkan baris kode pada /app/Http/routes.php

Silakan dicoba dengan membuka halaman : http://www.laravel.local/tipe (saya menggunakan virtual host)

Terminate Middleware

Fitur penting lainnya adalah mengakhiri middleware yang akan dieksekusi setelah respon dikirim. Untuk membuatnya tambahkan terminate() pada middleware. Untuk mencobanya, silakan buat middleware dan controller baru seperti langkah di atas. Kemudian tambahkan kode di bawah pada middleware :

Registrasikan middleware :

Kemudian pada routes.php tambahkan :

Silakan dicoba dengan membuka URL : http://www.laravel.local/terminate

Semoga bermanfaat 🙂