laravel session cookie | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: laravel session cookie

Sunday, April 12, 2026

laravel session cookie

Laravel Session & Cookie Artikel #25 dari 50

Seri Belajar Laravel Lengkap

Session & Cookie di Laravel:
Menyimpan Data Sementara

Pernah bingung kenapa website bisa "ingat" kamu habis login? Rahasia di baliknya adalah Session & Cookie — dua mekanisme penyimpanan data sementara yang wajib kamu kuasai dalam autentikasi Laravel Breeze.

⏱ 8
Menit Baca
🎯
Intermediate
2025
Updated

Bayangkan kamu masuk ke minimarket, ambil barang, lalu pergi ke kasir — tapi kasirnya nggak ingat siapa kamu dan kamu harus kenalan ulang setiap langkah. Menyebalkan, kan? Nah, itulah yang terjadi di web kalau tidak ada session dan cookie. Dua mekanisme inilah yang membuat sistem autentikasi Laravel Breeze bisa "mengingat" pengguna yang sudah login tanpa harus verifikasi ulang di setiap halaman. Di artikel ke-25 dari 50 Artikel Belajar Laravel ini, kamu akan belajar konsep dan implementasi session & cookie secara mendalam — lengkap dengan kode siap pakai.

📌 Definisi Kunci

Session vs Cookie — Apa Bedanya?

Session adalah data yang disimpan di sisi server dan diidentifikasi via ID unik yang dikirim ke browser. Cookie adalah data kecil yang disimpan langsung di browser pengguna dan dikirim ke server di setiap request. Keduanya bekerja bersama dalam sistem autentikasi Laravel Breeze untuk menjaga state pengguna.

🗄️ Memahami Session di Laravel: Loker Digital Kamu

Coba bayangkan session seperti loker di perpustakaan. Saat kamu masuk (login), kamu dapat kunci loker (session ID). Semua barang kamu (data: nama, role, preferensi) disimpan di dalam loker itu di server. Kamu cukup bawa kuncinya — dan setiap kali minta sesuatu ke server, kunci itulah yang dipakai untuk mengambil datamu. Itulah cara session bekerja dalam konteks autentikasi Laravel Breeze.

Laravel mendukung beberapa driver session secara bawaan. Kamu bisa mengonfigurasinya di file .env atau config/session.php.

Driver Penyimpanan Cocok Untuk Kecepatan
file storage/framework/sessions Development / VPS kecil Sedang
database Tabel sessions di DB Produksi multi-server Lambat
redis In-memory (Redis) Aplikasi high traffic Sangat Cepat
cookie Browser (encrypted) Data ringan non-sensitif Cepat
💡

Tips untuk Pemula

Untuk proyek belajar dan latihan, driver file sudah lebih dari cukup. Jangan khawatir soal Redis dulu — fokus pahami konsepnya, baru optimalkan saat naik ke produksi.

Cara Menggunakan Session di Laravel — Step by Step

1

Menyimpan Data ke Session

Gunakan helper session() atau facade Session:: untuk menyimpan data.

// Cara 1: Helper function
session(['user_role' => 'admin']);

// Cara 2: Method put()
session()->put('user_role', 'admin');

// Cara 3: Facade (di Controller)
use Illuminate\Support\Facades\Session;
Session::put('user_role', 'admin');

// Dari Request object (di Controller)
$request->session()->put('user_role', 'admin');
2

Mengambil & Mengecek Data Session

// Ambil nilai (dengan default jika tidak ada)
$role = session('user_role', 'guest');

// Cek apakah key ada
if (session()->has('user_role')) {
    // Session user_role ada dan bukan null
}

// Ambil lalu hapus sekaligus (flash-like)
$role = session()->pull('user_role', 'guest');

// Ambil semua session
$allData = session()->all();
3

Menghapus Data Session

// Hapus satu key
session()->forget('user_role');

// Hapus beberapa key sekaligus
session()->forget(['user_role', 'cart_items']);

// Hapus SEMUA session (flush) — dipakai saat logout!
session()->flush();

// Invalidate dan regenerate session ID (lebih aman)
$request->session()->invalidate();
$request->session()->regenerateToken();

🍪 Cookie di Laravel & Autentikasi Laravel Breeze

Kalau session itu seperti loker di perpustakaan, maka cookie adalah kertas catatan kecil yang kamu bawa sendiri. Browser menyimpannya, dan secara otomatis mengirimkannya ke server di setiap request. Di sistem autentikasi Laravel Breeze, cookie "remember me" adalah contoh nyata penggunaan cookie — ketika kamu centang "Ingat Saya", Laravel menyimpan token terenkripsi di cookie browser kamu selama beberapa hari.

Laravel secara default mengenkripsi semua cookie menggunakan app key-mu. Jadi meskipun cookie disimpan di browser, isinya tidak bisa dibaca sembarangan oleh pengguna atau pihak lain.

Insight Penting

Di balik fitur "Remember Me" pada autentikasi Laravel Breeze, Laravel menyimpan hash token di tabel remember_tokens di database, lalu meletakkan token tersebut di cookie browser. Inilah cara Laravel memverifikasi pengguna bahkan setelah session berakhir.

Membuat & Membaca Cookie di Laravel

1

Mengirim Cookie via Response

use Illuminate\Support\Facades\Cookie;

public function setUserPreference(Request $request)
{
    // Cookie bertahan 60 menit
    $cookie = Cookie::make(
        'theme',       // nama
        'dark',        // nilai
        60             // menit
    );

    return redirect('/')->withCookie($cookie);
}

// Cookie permanen (5 tahun)
$forever = Cookie::forever('remember_token', $token);
2

Membaca & Menghapus Cookie

// Membaca cookie dari request
$theme = $request->cookie('theme', 'light'); // default: light

// Atau via helper
$theme = Cookie::get('theme');

// Menghapus cookie (set expire = masa lalu)
return response('OK')
    ->withCookie(Cookie::forget('theme'));

// Cookie yang TIDAK dienkripsi Laravel
// Tambahkan nama-nya ke $except di EncryptCookies.php:
protected $except = ['tracking_id'];
⚠️

Perhatian!

Jangan pernah simpan data sensitif (password, token penting, data kartu kredit) langsung di cookie tanpa enkripsi tambahan. Meskipun Laravel mengenkripsi cookie secara default, cookie tetap bisa dilihat di browser developer tools. Simpan data sensitif di session (server-side) atau database saja.

🔐 Session dalam Alur Autentikasi Laravel Breeze

Saat kamu install autentikasi Laravel Breeze, framework secara otomatis mengatur alur session yang aman. Yuk kita bedah apa yang sebenarnya terjadi ketika user login:

🔍 Analisis Alur Autentikasi

Apa yang terjadi saat user login via Laravel Breeze?

1
User kirim POST ke /login dengan email + password
2
AuthenticatedSessionController memvalidasi kredensial via Auth::attempt()
3
Jika berhasil, Laravel memanggil $request->session()->regenerate() untuk mencegah session fixation attack
4
User ID disimpan di session, dan session ID baru dikirim ke browser via cookie laravel_session
5
Di request berikutnya, middleware auth membaca session ID dari cookie, mencari data di storage, dan mengautentikasi user secara otomatis ✅

Praktik Nyata: Session di Controller

app/Http/Controllers/ProfileController.php
namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller
{
    public function updateTheme(Request $request)
    {
        $request->validate([
            'theme' => 'required|in:light,dark'
        ]);

        // Simpan preferensi tema di session
        $request->session()->put('theme', $request->theme);

        // Flash message untuk notifikasi
        $request->session()->flash('success', 'Tema berhasil diperbarui!');

        return back();
    }

    public function show(Request $request)
    {
        // Baca session tema, default ke 'light'
        $theme = $request->session()->get('theme', 'light');

        return view('profile.show', compact('theme'));
    }
}
🔥

Fakta Menarik

Laravel secara otomatis memanggil session()->regenerate() setelah login berhasil. Ini adalah langkah keamanan krusial untuk mencegah Session Fixation Attack — serangan di mana hacker "menetapkan" session ID korban sebelum login, lalu mengambil alih akun mereka setelah login berhasil.

Koneksi ke Artikel Berikutnya

Kamu mungkin perhatikan kode session()->flash() di atas. Flash session adalah session yang hanya hidup untuk satu request berikutnya — sangat berguna untuk notifikasi sukses/error. Topik ini akan dibahas tuntas di Artikel 26: Notifikasi & Alert dengan Session Flash Message!

✅ Kesimpulan

Kamu Sekarang Paham Fondasi Autentikasi Laravel Breeze!

Session menyimpan data di sisi server dan diidentifikasi via cookie session ID — aman untuk data sensitif seperti info user yang login.

Cookie menyimpan data di browser — cocok untuk preferensi ringan non-sensitif, dan Laravel mengenkripsinya secara otomatis.

Autentikasi Laravel Breeze menggunakan keduanya secara cerdas — session untuk menyimpan state login, cookie untuk mengirimkan session ID dan fitur "Remember Me".

Session regeneration adalah mekanisme keamanan otomatis yang melindungi dari session fixation attack setiap kali user berhasil login.

Ini adalah artikel ke-25 dari Seri 50 Artikel Belajar Laravel. Setiap artikel saling terhubung — jadi pastikan kamu tidak melewatkan satu pun! 🚀

#Laravel #PHP #Session #Cookie #LaravelBreeze #WebDevelopment #Tutorial

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux