Belajar Laravel - Authentication
Episode 10 of 24

Belajar Laravel - Authentication

Menerapkan authentication di Laravel 13: starter kit Breeze dan Jetstream, alur login/register/logout, proteksi route dengan middleware auth, password reset, dan email verification.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Kebanyakan aplikasi nyata butuh user yang bisa login. Membangun authentication dari nol adalah pekerjaan berbahaya — session, hash password, reset token, email verification, dan CSRF mudah salah. Laravel menyelesaikannya dengan starter kit yang menghasilkan kode auth lengkap dan sudah teruji dalam hitungan detik.

Di episode ini kita pasang Breeze, jelajahi apa yang dihasilkannya, dan pelajari cara memakai middleware auth, password reset, serta email verification.

Starter Kits: Breeze dan Jetstream

Laravel Breeze — Ringan dan Minimalis

Breeze adalah starter kit paling sederhana: login, register, password reset, email verification, dan profil — semuanya dengan Blade + Tailwind, tanpa fitur tambahan yang tidak perlu.

Pasang Breeze
composer require laravel/breeze --dev
php artisan breeze:install blade
php artisan migrate
npm install && npm run build

Setelah itu jalankan php artisan serve — halaman /register, /login, dan /dashboard sudah siap.

Laravel Jetstream — Fitur Lebih Kaya

Jetstream memakai Livewire (atau Inertia + Vue/React) dan membawa fitur tambahan: profil & foto, tim/teams, dan API token:

Pasang Jetstream
composer require laravel/jetstream
php artisan jetstream:install livewire
php artisan migrate
npm install && npm run build
AspekBreezeJetstream
UkuranMinimalLengkap
TeknologiBlade + TailwindLivewire atau Inertia
Fitur ekstraTeams, API tokens, profil lengkap
Cocok untukProyek yang mau kontrol penuhProyek yang mau fitur siap pakai

Note

Starter kit itu sumber belajar yang bagus, bukan kotak hitam: file auth yang dihasilkan bisa kalian baca dan modifikasi. Breeze bahkan menghasilkan controller sederhana (Auth\RegisteredUserController, Auth\AuthenticatedSessionController) yang mudah dipelajari — cocok untuk memahami alur auth di episode ini.

Alur yang Dihasilkan

Kedua kit menghasilkan alur standar:

  1. Register — validasi nama/email/password, hash password (bcrypt), buat user, login otomatis.
  2. Login — verifikasi kredensial, mulai session.
  3. Logout — invalidasi session dan hapus cookie.
  4. Password reset — token sekali pakai dikirim via email.
  5. Email verification — link verifikasi untuk user baru.

Di balik layar, Laravel memakai guard dan provider: guard web menyimpan user di session, provider users menentukan model User. Konfigurasi ada di config/auth.php. Untuk API, guard sanctum kita bahas di episode 18.

Middleware auth: Melindungi Route

Fitur utama auth adalah membatasi akses. Route yang butuh login dipasangi middleware auth:

Proteksi route dengan middleware
Route::get('/dashboard', function () {
    return view('dashboard');
})->middleware('auth');

Atau sekelompok route sekaligus:

Proteksi seluruh route group
Route::middleware('auth')->group(function () {
    Route::get('/dashboard', [DashboardController::class, 'index']);
    Route::resource('posts', PostController::class);
});

Bukan itu saja: visitor yang belum login akan di-redirect ke halaman login, dan yang sudah login dilarang membuka /login (lewat middleware guest). Di Blade, kita bisa mengecek status dengan direktif @auth/@guest:

Direktif auth di Blade
@auth
    <a href="{{ route('dashboard') }}">Dashboard</a>
@endauth
 
@guest
    <a href="{{ route('login') }}">Login</a>
@endguest

User yang login diakses di mana saja via helper auth()->user().

Password Reset dan Email Verification

Kedua fitur diaktifkan dengan mengubah route breeze:install yang sudah ada, atau memakai route bawaan laravel/auth dari php artisan ui (legacy). Untuk memastikan route auth lengkap aktif:

Cek route auth
php artisan route:list --name=password
php artisan route:list --name=verification
  • Password reset: memakai token acak yang disimpan di tabel password_reset_tokens. Setelah reset, password lama otomatis tidak valid.
  • Email verification: model User harus mengimplementasikan MustVerifyEmail. Route yang memerlukan verifikasi ditandai middleware verified:
Route yang butuh email terverifikasi
Route::get('/dashboard', ...)
    ->middleware(['auth', 'verified']);

Tip

Selalu pasang verified setelah auth pada route yang menampilkan data pribadi. Di banyak tim, email verification ditunda sampai skala mengharuskan — tapi memaksakannya sejak awal (misalnya untuk aplikasi publik) lebih baik daripada mengubah alur belakangan.

Praktik Keamanan Dasar

  • Laravel meng-hash password dengan bcrypt (atau argon2id) — jangan pernah menyimpan plain text.
  • Jangan pernah melakukan query "cari user lalu bandingkan password" secara manual — selalu Auth::attempt($credentials).
  • Aktifkan RateLimiter untuk route login agar password yang salah berkali-kali tidak membuka pintu brute force (kita bahas di episode 12/16).

Penutup

Inti yang harus dibawa pulang:

  • Breeze untuk auth minimal, Jetstream untuk fitur lengkap — keduanya menghasilkan kode auth yang bisa dipelajari.
  • Proteksi route dengan middleware auth, dan tampilkan status via @auth/@guest.
  • Password reset dan email verification datang gratis dari starter kit; pasang verified untuk data pribadi.
  • Selalu Auth::attempt() — jangan pernah bandingkan password manual.

Di episode 11 selanjutnya kita akan membahas authorization — perbedaan Gates dan Policies, $this->authorize() di controller, direktif @can, dan dasar RBAC/roles di Laravel. Sampai jumpa di episode 11!

Belajar Laravel - Authentication | Belajar Laravel