
Definisi Middleware
Seperti namanya, middleware berperan sebagai pengengah antara request dan response, middleware juga berperan sebagai mekanisme filter request yang masuk untuk kemudian dikirimkan kepada controller untuk menghasilkan response atas request tersebut.
Sebagai contoh, laravel menyertakan middleware yang memverifikasi apakah user yang menggunakan aplikasi apakah authenticated atau tidak, jika user tersebut telah login dan terverified (authenticated), maka ia akan diredirect pada homepage/dashboard, namun jika tidak maka user tersebut akan diredirect kembali kehalaman login.
Middleware dapat dicreate dengan perintah berikut
php artisan make:middleware <middleware-name>middleware yang terlah dibuat secara otomatis akan ditempatkan pada direktory app/Http/Middleware
Contoh :
Kali ini kita akan coba membuat sebuah middleware yang dengan nama AgeMiddleware, berikut langkah-langkahnya :
Langkah1 :
Create Middleware dengan perintah artisan berikut pada terminal/command prompt
php artisan make:middleware AgeMiddlewareLangkah2 :
Setelah eksekusi perintah dilakukan maka akan muncul keterangan berikut pada terminal
Langkah3 :
AgeMiddlware telah berhasil dibuat dan otomatis berada pada direktory app/Http/Middleware, dan isi dari file middleware AgeMiddleware adalah seperti berikut
<?php
namespace App\Http\Middleware;
use Closure;
class AgeMiddleware
{
public function handle($request, Closure $next)
{
return $next($request);
}
}
Register Middleware
Sebelum dapat menggunakan middleware yang telah kita buat, kita perlu untuk meregister middleware pada aplikasi kita. Ada 2 type middleware pada laravel yaitu :
- Global Middleware
- Route Middleware
Middleware dapat diregister pada file kernel.php pada direktory app/Http pada file tersebut berisi 2 properties yaitu $middleware dan $routeMiddleware. Properti $middleware digunakan untuk meregister Global Middleware dan $routeMiddleware untuk meregister middleware yang spesifik pada route tertentu.
Untuk meregister global middleware, sisipkan class middleware yang akan digunakan pada akhir baris property $middleware seperti berikut :
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\App\Http\Middleware\AgeMiddleware::class,
];
Untuk meregister Route Middleware kita dapat menambahkan key dan value pada properti $routeMiddleware berikut ini
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'age=> \App\Http\Middleware\AgeMiddleware::class,
];
Middleware Parameter
kita juga dapat melewatkan parameter dengan middleware, sebagai contoh : jika aplikasi yang kita buat memiliki beberapa roles yang berbeda seperti user, admin, super admin,dll, dan kita ingin melakukan aksi authentikasi berdasarkan role tersebut, hal ini tentunya dapat kita lakukan dengan middleware. middleware yang kita buat berisi fungsi yang dapat melewatkan custom argument setelah $next argument seperti berikut :
public function handle($request, Closure $next)Contoh :
{
return $next($request);
}
Langkah1 :
Create sebuah middleware dengan nama RoleMiddleware
php artisan make:middleware RoleMiddleware
Langkah2 :
Setelah mengeksekusi perintah diatas maka akan kita dapatkan output berikut :
Langkah3 :
Tambahkan kode berikut ini pada RoleMiddleware yang telah kita buat, dan berada pada app/Http/Middleware/RoleMiddleware.php
<?phpLangkah4 :
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware
{
public function handle($request, Closure $next, $role)
{
echo "Role: ".$role;
return $next($request);
}
}
Register RoleMiddleware pada file app\Http\Kernel.php tambahkan kode berikut ini :
Langkah5 :
Eksekusi perintah berikut ini pada terminal untuk mengcreate controller
php artisan make:controller TestControllerLangkah6 :
Output dari perintah diatas adalah sebagai berikut
Langkah7 :
Tambahkan kode berikut ini pada app/Http/TestController.php
<?phpLangkah8 :
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class TestController extends Controller
{
public function index(){
echo "<br>Test Controller.";
}
}
Tambahkan kode berikut pada file app/Http/routes.php
Route::get('role',[
'middleware' => 'Role:editor',
'uses' => 'TestController@index',
]);
Langkah9 :
Jalankan perintah berikut pada terminal
php artisan servekemudian buka browser dengan url berikut http://localhost:8000/role
Langkah10:
Berikut Output yang akan tampil pada browser
Sekian Pembahasan Singkat mengenai middleware pada laravel 5, pembahasan kita belum selesai, karena waktu yang sedikit untuk menuliskannya pada blog ini, maka akan saya coba bahas lebih lanjut pada kesempatan berikutnya.
Happy Coding...
No comments:
Post a Comment