Banyak orang mulai masuk dunia vibecoding lewat AI coding, Laravel, SaaS builder, atau membuat aplikasi internal sendiri.
Awalnya semua terasa mudah.
Tinggal bilang ke AI, “Buatkan sistem login.”
Beberapa detik kemudian halaman login jadi.
- Ada register.
- Ada forgot password.
- Ada dashboard.
- Ada middleware.
- Ada token.
Semua tampak berjalan normal.
Sampai suatu hari mulai muncul masalah aneh.
User tiba-tiba logout sendiri. Token expired tanpa alasan jelas. Login di HP tapi logout di laptop. API kadang unauthorized. Session random hilang. Cloudflare terasa bikin auth error. Atau lebih aneh lagi, “Padahal saya baru login 5 menit lalu.”
Di sinilah banyak vibecoder mulai sadar, ternyata sistem login bukan sekadar halaman email dan password.
Di balik tombol login modern, ada dunia panjang bernama authentication architecture.
Dan salah satu istilah yang sering muncul di sana adalah JWT dan PASETO.
Table of Contents
Dunia Sebelum JWT
Sebelum era API modern, kebanyakan website memakai sistem session tradisional.
Cara kerjanya sederhana. Ketika user login, server membuat session. Session itu disimpan di server, database, Redis, atau memory server.
Browser hanya menyimpan ID session.
Misalnya:
SESSION_ID=abc123xyz
Saat user membuka halaman lain, browser mengirim session ID itu lagi.
Server lalu mengecek, “session ini masih valid atau tidak?” Kalau valid, masuk. Kalau tidak, logout.
Model ini dipakai bertahun tahun oleh PHP klasik, WordPress, Laravel awal, CodeIgniter, Joomla, dan Drupal.
Dan menariknya, sistem lama ini sebenarnya sangat stabil.
Karena server memegang kontrol penuh.
Semakin banyak kontrol di server, biasanya semakin kecil risiko developer salah implementasi auth.
Namun dunia internet berubah.
Muncul mobile apps, SPA, React, Vue, microservices, API publik, dan login lintas device.
Lalu muncullah JWT.
Baca juga: Panduan mengunci VPS dari AI agent dengan systemd dan cgroup.
Kenapa JWT Menjadi Sangat Populer
JWT adalah singkatan dari JSON Web Token.
JWT menjadi sangat populer karena menawarkan konsep stateless authentication.
Artinya, server tidak perlu menyimpan session user.
Token sudah membawa informasi sendiri.
Misalnya:
{ "user_id": 15, "role": "admin", "exp": 9999999999 }
Semua data itu dimasukkan ke token.
Lalu token dikirim ke browser atau aplikasi mobile.
Server tinggal membaca token tersebut.
Kelebihannya luar biasa untuk zamannya.
- Tidak perlu session database.
- Cocok untuk API.
- Cocok mobile apps.
- Cocok microservices.
- Mudah scaling multi server.
- Cepat.
Populer di cloud ecosystem.
Akhirnya hampir semua orang memakai JWT.
Tutorial di internet penuh JWT.
AI coding juga sering otomatis memilih JWT.
Developer merasa JWT adalah standar modern.
Padahal sebenarnya, JWT punya banyak jebakan.
Masalah Besar JWT yang Jarang Dipahami Pemula
JWT sering terlihat sederhana.
Padahal di baliknya ada kompleksitas cryptography dan security policy.
Masalah terbesar JWT bukan formatnya.
Masalah terbesarnya justru developer terlalu bebas.
JWT mengizinkan developer memilih algoritma, mode signature, mode encryption, dan validation logic.
Akibatnya, sangat mudah salah implementasi.
Dan dunia nyata penuh contoh seperti itu.
1. User sering logout sendiri
Penyebab bisa token expired terlalu cepat, timezone server salah, refresh token gagal, cookie tidak sinkron, Cloudflare cache salah, atau domain dan subdomain mismatch.
Misalnya:
app.domain.com
api.domain.comTetapi cookie hanya berlaku untuk:
domain.comAkhirnya login terasa random.
Kadang masuk.
Kadang logout.
Banyak orang menyalahkan Laravel.
Padahal masalahnya ada pada arsitektur auth.
2. Login berhasil tapi API unauthorized
Ini sangat sering terjadi di vibecoding.
Frontend React berhasil login, tetapi saat memanggil API muncul 401 Unauthorized.
Penyebabnya bisa token tidak dikirim, bearer token salah, CORS bermasalah, token expired, CSRF mismatch, atau cookie secure gagal.
Di sinilah banyak vibecoder mulai pusing.
Karena AI coding bisa membuat login page.
Tetapi AI belum tentu membuat arsitektur auth yang stabil.
3. Logout semua device sulit
JWT bersifat stateless.
Artinya server tidak menyimpan session utama.
Akibatnya, logout global jadi lebih sulit.
Kalau token sudah tersebar, server tidak mudah menarik semuanya kembali.
Karena itu banyak perusahaan besar akhirnya kembali memakai hybrid session untuk menyeimbangkan fleksibilitas dan kontrol.
Apa Itu PASETO
Lalu lahirlah PASETO.
PASETO adalah Platform Agnostic Security Tokens.
Tujuan utamanya sederhana, membuat token modern yang lebih aman dan lebih sulit disalahgunakan developer.
PASETO belajar dari kelemahan JWT.
Kalau JWT memberi terlalu banyak kebebasan, PASETO justru membatasi developer.
Contohnya, JWT memberi ruang memilih algoritma.
PASETO justru mengunci algoritma lewat versi protocol.
Misalnya:
v4.publicv4.localArtinya versi jelas, crypto jelas, mode jelas.
Tidak ada lagi algorithm confusion, downgrade attack, atau none algorithm.
PASETO memaksa developer memakai jalur yang aman.
Filosofinya mirip Laravel.
Opinionated.
Tidak terlalu bebas.
Tetapi lebih aman untuk kebanyakan kasus.
Baca juga: Panduan lengkap menulis prompt yang benar di Claude, ChatGPT, dan Manus.
Bedanya JWT dan PASETO dalam Bahasa Awam
Bayangkan JWT seperti motor balap custom.
Bisa sangat cepat.
Bisa sangat fleksibel.
Tetapi kalau salah setting bisa berbahaya.
Sedangkan PASETO seperti mobil modern dengan fitur safety bawaan.
Tidak sebebas motor custom.
Tetapi lebih aman untuk kebanyakan orang.
JWT cocok untuk developer yang benar benar paham security architecture.
PASETO cocok untuk developer modern yang ingin lebih aman secara default.
Kenapa User Sering Logout Sendiri
Ini salah satu masalah paling umum di dunia vibecoding.
Dan lucunya, sering bukan karena Laravel rusak.
Penyebab paling sering justru hal hal sederhana yang luput diperhatikan sejak awal.
1. Session expiration terlalu pendek
Misalnya session hanya 15 menit. User buka dashboard, pergi makan, lalu balik lagi. Hasilnya logout.
2. Cookie domain salah
Contoh: admin.domain.com dan api.domain.com, tetapi cookie hanya valid untuk admin.domain.com. Akibatnya API gagal mengenali login.
3. Cloudflare cache salah
Kadang halaman auth ikut tercache. Akhirnya session user tertukar. Ini bahaya.
4. HTTPS tidak konsisten
Kadang login via https, tetapi API via http. Cookie secure akhirnya gagal dikirim.
5. Token refresh gagal
Access token pendek umur. Refresh token rusak. Hasilnya logout random.
Studi Kasus Login Bermasalah di Dunia Nyata
Bayangkan Anda membuat SaaS LMS.
User login, belajar video, menonton dua jam, lalu tiba tiba logout.
User marah.
Katanya platformnya jelek.
Padahal masalahnya mungkin hanya SESSION_LIFETIME=30.
Artinya 30 menit.
Atau Redis session cleanup terlalu agresif.
Atau server timezone salah.
Atau cookie domain tidak cocok.
Masalah auth sering tampak kecil, tetapi dampaknya besar ke bisnis.
Karena auth adalah pintu utama aplikasi.
Kalau pintunya bermasalah, seluruh aplikasi terasa rusak.
Best Practice Vibecoding Authentication Modern
Ini bagian paling penting. Karena banyak tutorial internet sebenarnya sudah outdated.
Best practice modern justru kembali ke arsitektur yang lebih sederhana dan lebih mudah diaudit.
Untuk Laravel monolith
Gunakan Laravel Sanctum, HttpOnly Cookie, dan session server side.
Kenapa? Karena lebih stabil, lebih aman, minim drama token, cocok Livewire, cocok Filament, cocok VPS kecil, dan cocok SaaS internal.
Ini yang sekarang dipakai banyak developer Laravel serius.
Jangan langsung pakai JWT untuk semua hal
Banyak pemula merasa kalau modern harus JWT.
Padahal belum tentu. JWT sering overkill untuk dashboard admin, LMS, internal app, CRUD system, atau ERP kecil.
Session biasa malah sering lebih stabil.
Pakai short lived token
Kalau memang perlu token, gunakan access token pendek dan refresh token rotation. Jangan token abadi.
Jangan simpan token di localStorage
Ini kesalahan klasik frontend modern. Karena localStorage mudah terkena XSS. Lebih aman pakai HttpOnly Cookie.
Gunakan HTTPS penuh
Auth tanpa HTTPS adalah bencana. Karena token bisa dicuri.
Jangan percaya AI coding sepenuhnya untuk auth
AI bisa membuat controller, middleware, dan login page. Tetapi AI belum tentu memahami security architecture penuh. Karena itu auth wajib dipahami, diuji, dan direview.
Pilih JWT atau PASETO?
Kalau Anda membangun dashboard admin, LMS, ERP internal, SaaS Laravel, atau Filament admin panel, maka session plus Laravel Sanctum biasanya sudah lebih dari cukup.
Lebih ringan. Lebih stabil. Lebih minim drama.
Kalau Anda membangun mobile apps, public API, machine to machine auth, atau ecosystem multi service, JWT masih sangat relevan. Tetapi pastikan implementasinya benar.
Sedangkan PASETO cocok jika Anda ingin pendekatan modern, ingin security default lebih aman, dan ingin mengurangi risiko salah implementasi JWT.
Menariknya, tren industri modern justru bergerak kembali ke auth yang lebih sederhana, cookie secure, session hybrid, token pendek umur, dan backend for frontend architecture.
Karena banyak engineer senior mulai sadar, authentication yang terlalu kompleks sering lebih berbahaya daripada authentication yang sederhana tetapi stabil.
Bagi vibecoder modern, pelajaran paling penting adalah sistem login bukan sekadar halaman email dan password.
Ia adalah fondasi kepercayaan seluruh aplikasi. Kalau fondasi auth buruk, aplikasi secanggih apa pun akan terasa rusak.
Ini sharing aja, kalau keliru tolong diluruskan, atau bisa anda tambahkan di komentar ya
Anjrah Ari Susanto, S.Psi.






No comment yet, add your voice below!