;
Belajar Laravel dengan Mudah dan Menyenangkan
Middleware adalah lapisan filter yang memproses permintaan HTTP sebelum mencapai rute atau setelah respons dikembalikan. Middleware digunakan untuk melindungi rute, misalnya, memastikan hanya pengguna yang sudah login yang bisa mengakses halaman tertentu.
Middleware diterapkan pada rute atau controller untuk memeriksa kondisi, seperti autentikasi, sebelum menjalankan logika rute. Jika kondisi tidak terpenuhi (misalnya, pengguna belum login), middleware bisa mengarahkan ulang atau menolak akses.
Berikut langkah-langkah membuat middleware untuk melindungi rute /posts agar hanya bisa diakses oleh pengguna yang sudah login.
Pastikan kamu sudah:
.env.php artisan make:auth atau Laravel Breeze).posts dan model Post, serta controller PostController dengan metode index.resources/views/posts.blade.php untuk menampilkan data.Buat Middleware
Jalankan perintah berikut untuk membuat middleware:
php artisan make:middleware EnsureUserIsAuthenticated
Ini membuat file app/Http/Middleware/EnsureUserIsAuthenticated.php.
Edit Middleware
Buka file EnsureUserIsAuthenticated.php dan tambahkan logika untuk memeriksa autentikasi:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class EnsureUserIsAuthenticated
{
public function handle(Request $request, Closure $next)
{
if (!Auth::check()) {
return redirect('/login')->with('error', 'Silakan login terlebih dahulu.');
}
return $next($request);
}
}
Penjelasan:
Auth::check(): Memeriksa apakah pengguna sudah login.redirect('/login'): Mengarahkan ke halaman login jika belum login.$next($request): Melanjutkan ke rute jika kondisi terpenuhi.Daftarkan Middleware
Buka app/Http/Kernel.php dan tambahkan middleware ke properti $routeMiddleware:
protected $routeMiddleware = [
// ...
'auth.custom' => \App\Http\Middleware\EnsureUserIsAuthenticated::class,
];
Terapkan Middleware pada Rute
Buka routes/web.php dan terapkan middleware pada rute /posts:
use App\Http\Controllers\PostController;
Route::get('/posts', [PostController::class, 'index'])->middleware('auth.custom');
Alternatif, terapkan di controller (PostController.php):
public function __construct()
{
$this->middleware('auth.custom');
}
Jalankan Server
Jalankan server Laravel dengan:
php artisan serve
Uji rute:
http://localhost:8000/posts tanpa login → Diarahkan ke /login dengan pesan error./posts → Menampilkan daftar postingan.Laravel menyediakan middleware auth bawaan untuk autentikasi. Contoh penggunaan:
Route::get('/posts', [PostController::class, 'index'])->middleware('auth');
Ini otomatis memeriksa autentikasi dan mengarahkan ke halaman login jika perlu.
Jika pengguna belum login dan mencoba mengakses /posts, mereka akan diarahkan ke /login. Setelah login, mereka bisa melihat daftar postingan dari controller.
guest atau throttle.Selamat! Kamu sudah menguasai dasar Middleware di Laravel untuk melindungi rute!