Website bisa mengenali dan mengingat status login kamu karena menggunakan dua mekanisme utama: Session atau Token. Secara bawaan, protokol internet (HTTP) bersifat stateless alias tidak memiliki daya ingat, sehingga tanpa Session atau Token, kamu akan dipaksa memasukkan username dan password setiap kali berpindah halaman atau mengklik tombol di dalam website.
Mengapa Website Memerlukan Sistem Pengingat?
Setiap kali browser berinteraksi dengan server web, komunikasi tersebut berjalan di atas protokol HTTP. Karena HTTP tidak menyimpan riwayat permintaan sebelumnya, server selalu menganggap setiap request baru datang dari orang yang sama sekali berbeda.
Untuk mengatasi batasan ini, pengembang web menggunakan pendekatan Stateful (berbasis Session) atau Stateless (berbasis Token) agar status autentikasi pengguna tetap terjaga selama menjelajah web.
Mengenal Session: Pendekatan Berbasis Server (Stateful)
Pada sistem autentikasi berbasis sesi (Session-Based Authentication), pihak server memegang kendali penuh untuk mencatat dan mengingat siapa yang sedang aktif.
Analogi Karcis Nomor Penitipan Barang
Cara kerja sesi sangat mirip saat kamu menitipkan jaket di loker:
- Petugas menaruh jaketmu di lemari penyimpanan, lalu memberimu secarik kertas berisi nomor karcis: #402.
- Setiap kali ingin mengambil atau mengecek barang, kamu cukup menunjukkan nomor #402 tersebut.
- Petugas akan mencocokkan nomor karcis dengan buku catatan loker untuk memastikan barang tersebut milikmu.
Alur Kerja dan Karakteristik Session
Ketika kamu berhasil login, server memvalidasi identitasmu, membuat data sesi lengkap (seperti ID pengguna dan peran/role) di dalam RAM, database, atau Redis, lalu menghasilkan sebuah Session ID.
Session ID ini dikirimkan kembali ke browser dan disimpan di dalam Cookie (umumnya dengan atribut keamanan HttpOnly). Setiap kali kamu berpindah halaman, browser secara otomatis menyertakan Cookie tersebut sehingga server tinggal mencocokkannya ke database.
- Kelebihan: Sangat mudah dibatalkan (revoke). Jika admin ingin melakukan force logout atau kamu mengganti password, data sesi di server cukup dihapus seketika.
- Kekurangan: Sulit di-scale secara horizontal. Jika aplikasi berkembang menjadi beberapa server terpisah, semua server harus terhubung ke satu tempat penyimpanan sesi terpusat seperti Redis.
- Penggunaan Umum: Sangat cocok untuk arsitektur monolitik konvensional seperti Laravel Blade, Django, Ruby on Rails, atau WordPress.
Mengenal Token: Pendekatan Mandiri Tanpa Beban Server (Stateless)
Berbeda dengan sesi, pendekatan berbasis token (Token-Based Authentication, misalnya JSON Web Token atau JWT) tidak menuntut server untuk mencatat aktivitas loginmu.
Analogi Tiket Pesawat Digital
Token bekerja layaknya tiket pesawat digital ber-QR Code:
- Di atas tiket sudah tertulis lengkap identitasmu, nomor kursi, dan jadwal terbang.
- Petugas bandara tidak perlu membuka buku catatan besar untuk mencari namamu satu per satu.
- Petugas cukup memindai stempel atau tanda tangan digital resmi maskapai di tiket tersebut. Selama tanda tangannya sah dan belum kedaluwarsa, kamu dipersilakan masuk.
Alur Kerja dan Karakteristik Token
Setelah login berhasil, server membuat token (JWT) yang berisi data identitas pengguna dan membubuhkan tanda tangan kriptografi (digital signature) menggunakan secret key milik server. Token ini diserahkan kepada klien untuk disimpan di localStorage, sessionStorage, atau secure cookie.
Pada permintaan berikutnya, klien melampirkan token tersebut melalui header Authorization: Bearer <Token>. Server hanya perlu memverifikasi tanda tangan kriptografinya tanpa perlu melakukan query pencarian ke database.
- Kelebihan: Bersifat stateless dan sangat mudah di-scale ke ratusan server karena server tidak perlu mengelola memori sesi.
- Kekurangan: Lebih sulit dibatalkan secara instan sebelum masa kedaluwarsanya (expiry time) habis, kecuali menggunakan mekanisme tambahan seperti token blacklisting atau refresh token rotation.
- Penggunaan Umum: Sangat ideal untuk Single Page Application (React, Vue, Next.js), aplikasi mobile (iOS/Android), REST API, dan arsitektur microservices.
Tabel Perbandingan: Memilih Antara Session dan Token
| Kriteria | Session (Cookie-based) | Token (JWT / Stateless) |
|---|---|---|
| Sifat (State) | Stateful (Data dicatat di server) | Stateless (Data tidak disimpan di server) |
| Beban Server | Memerlukan memori/database untuk simpan sesi | Ringan, hanya komputasi validasi tanda tangan |
| Skalabilitas | Butuh sinkronisasi data antar server (Redis) | Sangat mudah dibagikan ke banyak server |
| Kemudahan Logout | Instan (hapus data sesi dari database server) | Menunggu waktu kedaluwarsa atau sistem blacklist |
| Paling Cocok Untuk | Web monolitik (Laravel, Django, WordPress) | Web SPA (React/Vue), Mobile Apps, Microservices |
Frequently Asked Questions (FAQ)
1. Mengapa website tidak bisa mengingat login pengguna secara otomatis tanpa Session atau Token?
Karena protokol HTTP yang menjadi fondasi web bersifat stateless, di mana setiap permintaan data dianggap berdiri sendiri dan server tidak memiliki memori bawaan untuk mengenali kunjungan sebelumnya.
2. Mana yang lebih aman dan mudah untuk membatalkan akses login yang mencurigakan?
Session lebih mudah dibatalkan secara instan karena datanya tersimpan langsung di server. Admin atau sistem cukup menghapus baris sesi terkait di database atau Redis untuk memutus akses pengguna saat itu juga.
3. Kapan pengembang web lebih disarankan menggunakan Token dibanding Session?
Token disarankan ketika kamu membangun aplikasi web modern (SPA) seperti React atau Vue, aplikasi mobile, REST API, atau sistem microservices yang membutuhkan kinerja tinggi dan skalabilitas lintas server.
Pelajari Pembuatan Web Modern Bersama Kami
Memahami cara kerja autentikasi, pengelolaan sesi, dan pembuatan API adalah fondasi penting untuk menjadi seorang web developer andal. Jika kamu ingin menguasai praktik pembuatan aplikasi web dari dasar hingga arsitektur modern secara terarah, kamu bisa belajar bersama kami di Koding Akademi.
Kunjungi website resmi kami di https://www.kodingakademi.id/ dan temukan berbagai program kelas pemrograman yang siap membantumu meningkatkan keahlian di dunia teknologi!