Otentikasi Laravel

Hampir setiap aplikasi web butuh fitur login. Di PHP Native, kamu harus menulis kode registrasi, login, session handling, dan password hashing secara manual — bisa memakan ratusan baris kode.

Di Laravel? Kamu bisa punya sistem auth lengkap dalam 5 menit menggunakan Laravel Breeze.

1. Apa itu Laravel Breeze?

Laravel Breeze adalah starter kit resmi yang menyediakan:

  • ✅ Halaman registrasi
  • ✅ Halaman login
  • ✅ Fitur logout
  • ✅ Reset password via email
  • ✅ Verifikasi email
  • ✅ Halaman profil (edit nama, email, password)

Semuanya sudah terstyle rapi dan siap pakai!

2. Install Laravel Breeze

Dari terminal, di dalam folder project Laravel-mu:

# 1. Install Breeze via Composer
composer require laravel/breeze --dev

# 2. Jalankan installer Breeze
php artisan breeze:install blade

# 3. Install dependencies frontend & build CSS/JS
npm install && npm run build

# 4. Jalankan migrasi database
php artisan migrate

Kalau langkah migrasi ini gagal, jangan langsung ulang berkali-kali. Baca pesan SQL-nya dan cocokkan dengan panduan Laravel Migration Gagal.

Setelah itu, buka browser dan akses /register atau /login:

  • 👉 http://toko-keren.test/register
  • 👉 http://toko-keren.test/login
Starter Kit Lain

Selain Breeze (minimalis), Laravel juga punya Jetstream (lebih lengkap — team management, two-factor auth). Untuk pemula, mulai dari Breeze yang lebih sederhana.

3. Struktur File yang Dibuat Breeze

Setelah install, Breeze membuat file-file ini secara otomatis:

app/
└── Http/
    └── Controllers/
        └── Auth/
            ├── LoginController.php          ← Logika login
            ├── RegisteredUserController.php ← Logika registrasi
            ├── PasswordResetController.php  ← Reset password
            └── ...

resources/
└── views/
    └── auth/
        ├── login.blade.php       ← Form login
        ├── register.blade.php    ← Form registrasi
        └── forgot-password.blade.php

routes/
└── auth.php                      ← Semua route auth

Kamu bisa memodifikasi tampilan form dengan mengedit file-file Blade di resources/views/auth/. Jika setelah rename file muncul View [auth.login] not found, gunakan panduan View Not Found di Laravel untuk mengecek nama folder dan file Blade.

4. Menggunakan Auth di Controller

Setelah Breeze terpasang, kamu bisa cek status login di mana saja:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class DashboardController extends Controller
{
    public function index(Request $request)
    {
        // Cek apakah user sudah login
        if (auth()->check()) {
            $user = auth()->user(); // Ambil data user yang sedang login
            return view('dashboard', ['user' => $user]);
        }

        return redirect('/login');
    }
}

Di Blade, kamu juga bisa cek:

<!-- Di file Blade manapun -->
@auth
    <p>Halo, {{ auth()->user()->name }}! 👋</p>
    <a href="/dashboard">Dashboard</a>
@endauth

@guest
    <a href="/login">Login</a>
    <a href="/register">Daftar</a>
@endguest

5. Melindungi Route dengan Middleware auth

Ini bagian terpenting: mencegah user yang belum login mengakses halaman tertentu.

// routes/web.php

use App\Http\Controllers\DashboardController;
use App\Http\Controllers\ProdukController;

// Route publik (bisa diakses siapa saja)
Route::get('/', function () {
    return view('welcome');
});

// Route yang dilindungi (harus login dulu!)
Route::middleware('auth')->group(function () {
    Route::get('/dashboard', [DashboardController::class, 'index']);
    Route::get('/produk/create', [ProdukController::class, 'create']);
    Route::post('/produk', [ProdukController::class, 'store']);
});

Jika user yang belum login mencoba akses /dashboard, Laravel otomatis redirect ke /login.

6. Hash Password (Otomatis!)

Di PHP Native, kamu harus memanggil password_hash() dan password_verify() secara manual. Di Laravel, ini otomatis:

// Saat registrasi (di RegisteredUserController.php)
User::create([
    'name' => $request->name,
    'email' => $request->email,
    'password' => Hash::make($request->password), // Otomatis bcrypt!
]);

// Saat login — Laravel mengecek hash secara otomatis
// Kamu TIDAK perlu memanggil password_verify() manual
Jangan Simpan Password Plain Text!

Ini aturan nomor satu keamanan web. Laravel secara default menggunakan bcrypt untuk hashing, dan Breeze sudah menangani ini secara otomatis. Materi selengkapnya ada di Keamanan Password →.

7. Otorisasi: Siapa yang Boleh Apa?

Otentikasi (Auth) = Siapa kamu? (Login/registrasi) Otorisasi (Authz) = Apa yang boleh kamu lakukan? (Hak akses)

Laravel menyediakan Policies untuk mengatur otorisasi:

// Contoh: User hanya boleh edit produk miliknya sendiri

// app/Policies/ProdukPolicy.php
class ProdukPolicy
{
    public function update(User $user, Produk $produk): bool
    {
        return $user->id === $produk->user_id;
    }
}

// Di Controller:
public function edit(Produk $produk)
{
    $this->authorize('update', $produk); // Cek hak akses!

    return view('produk.edit', compact('produk'));
}

Jika user mencoba edit produk orang lain → Laravel otomatis mengembalikan 403 Forbidden.

8. Perbandingan: PHP Native vs Laravel

AspekPHP NativeLaravel Breeze
SetupTulis semua dari nol (200+ baris)composer require + artisan (5 menit)
RegistrasiForm + validasi + hash manualOtomatis tersedia
LoginSession manual + password_verifyOtomatis
Cek Login$_SESSION['user_id']auth()->check()
Proteksi Routeif di setiap fileMiddleware auth
Reset PasswordHarus bikin sendiriTinggal pakai

Selanjutnya

Kamu sudah lihat middleware('auth') di contoh route. Tapi apa sebenarnya middleware? Dan bagaimana cara membuat middleware sendiri? Lanjut ke Middleware → untuk memahami "satpam" Laravel.

Troubleshooting Terkait

Kalau login atau registrasi memunculkan error 419, lanjut baca: