Featured Post

Tren CSS & Layout Modern 2025: Flexbox, Grid & Beyond

 Kalau gue flashback sedikit ke awal belajar front-end, rasanya lucu juga mengingat betapa ribetnya bikin layout cuma pakai float dan posisi manual. Dikit-dikit “clear: both;”, margin lari ke mana-mana, dan debugging layout bisa makan waktu berjam-jam. Tapi industri website development berkembang cepat, dan setiap tahun selalu muncul cara baru yang bikin hidup developer lebih gampang. Masuk ke tahun 2025, CSS sudah jauh lebih matang, elegan, dan terasa seperti alat superpower. Gue ngerasa bikin layout sekarang nggak lagi sekadar “nyusun kotak", tapi benar-benar menciptakan pengalaman visual yang fleksibel, responsif, dan smart. Flexbox sudah mapan, Grid makin kuat, dan CSS modern seperti container queries, subgrid, dan nesting bikin proses styling jadi lebih rapi dan manusiawi. Artikel ini gue tulis berdasarkan pengalaman gue mengerjakan project klien sepanjang 2024–2025. Kita bakal bahas tren layout terbaru yang paling relevan, gimana cara pakainya, dan kenapa lo wajib melek t...

Panduan Membuat Authentication JWT dengan Node.js

 Dulu waktu pertama kali gue belajar backend, salah satu hal yang paling bikin kepala pusing adalah soal autentikasi. Gue pikir autentikasi itu cuma soal “username dan password cocok atau enggak”. Ternyata jauh lebih luas dari itu. Sistem login yang aman harus bisa memverifikasi user, menyimpan token dengan benar, dan memastikan setiap request hanya bisa diakses oleh user yang benar.

Sampai akhirnya gue ketemu dengan konsep JWT (JSON Web Token). Dari situ perjalanan gue di dunia backend, terutama di bidang website development, berubah total. JWT itu simpel, modern, dan sangat fleksibel untuk berbagai jenis aplikasi.

Di artikel ini, gue bakal jelasin JWT secara detail, kapan penggunaannya cocok, dan gimana bikin sistem authentication JWT di Node.js langkah demi langkah pakai gaya santai biar mudah diikuti.


Apa Itu JWT dan Kenapa Banyak Dipakai?

JWT adalah token berbentuk string panjang yang digunakan untuk mengidentifikasi user setelah proses login berhasil. Token ini dikirimkan pada setiap request, lalu server akan memverifikasinya.

Yang bikin JWT populer adalah sifatnya yang stateless, artinya:

  • Tidak perlu menyimpan session di server.

  • Tidak perlu database tambahan untuk session.

  • Token cukup diverifikasi menggunakan secret key.

JWT sangat cocok dipakai di website development modern seperti:

  • aplikasi SPA (React, Next.js, Vue),

  • aplikasi mobile,

  • API microservices,

  • aplikasi skala besar yang butuh performa tinggi.

Struktur JWT

JWT terdiri dari 3 bagian, masing-masing dipisah oleh titik:

header.payload.signature

Contohnya:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

Ketiganya sudah di-encode menggunakan base64.


Cara Kerja Authentication JWT

Biar gampang, lo bayangkan alurnya seperti ini:

1. User login

User kirim email & password ke server.

2. Server verifikasi

Kalau email dan password cocok → server buat token JWT.

3. Server kirim token ke client

Client akan menyimpan token, biasanya di localStorage, cookies, atau memory state.

4. Setiap request berikutnya

Client mengirim token tersebut dalam header:

Authorization: Bearer <jwt-token>

5. Server verifikasi token

Kalau valid → request diteruskan.
Kalau tidak valid → server tolak.

Proses ini simpel, cepat, dan aman selama secret key dijaga dengan benar.


Mengapa JWT Penting dalam Website Development?

Gue pernah bangun sebuah aplikasi dashboard yang penggunanya ribuan. Awalnya gue pakai session biasa. Tapi masalah mulai muncul:

  • server makin berat karena harus menyimpan session,

  • perlu Redis untuk scaling session,

  • proses validasi makin lama.

Setelah pindah ke JWT:

  • beban server jauh lebih ringan,

  • tidak perlu database session,

  • API jadi lebih mudah dipakai di berbagai platform.

JWT itu bisa dibilang solusi praktis untuk autentikasi di era modern.


Tools yang Dibutuhkan untuk Mulai

Sebelum coding, berikut tool yang perlu lo install:

  • Node.js

  • Express.js (atau framework lain)

  • jsonwebtoken (library JWT)

  • bcryptjs (untuk hash password)

  • body-parser / express.json()

Semua ini sering dipakai dalam proses website development backend.

Install dulu:

npm install express jsonwebtoken bcryptjs

Membuat Struktur Dasar Project

Buat folder project dengan struktur sederhana:

project/ ├── server.js ├── controllers/ ├── middlewares/ ├── routes/ └── config/

Struktur terpisah seperti ini bikin code lebih mudah dirawat, apalagi kalau lo lanjut scaling.


1. Membuat Server Express

Buka file server.js:

const express = require("express"); const app = express(); app.use(express.json()); app.get("/", (req, res) => { res.send("API berjalan..."); }); app.listen(3000, () => console.log("Server berjalan di port 3000"));

Server basic siap dipakai.


2. Membuat Registrasi User (Hash Password)

Sebelum user login, tentu harus daftar dulu. Di contoh ini, kita pakai array sebagai database sementara.

const bcrypt = require("bcryptjs"); let users = []; app.post("/register", async (req, res) => { const { email, password } = req.body; const hashed = await bcrypt.hash(password, 10); users.push({ email, password: hashed }); res.json({ message: "Registrasi berhasil" }); });

Password wajib di-hash. Jangan pernah simpan password asli—ini kesalahan fatal.


3. Membuat Login dan Generate JWT

Setelah user terdaftar, kita perlu bikin endpoint login:

const jwt = require("jsonwebtoken"); const SECRET = "secretKeySuperAman"; app.post("/login", async (req, res) => { const { email, password } = req.body; const user = users.find((u) => u.email === email); if (!user) return res.status(400).json({ message: "Email tidak terdaftar" }); const validPassword = await bcrypt.compare(password, user.password); if (!validPassword) return res.status(400).json({ message: "Password salah" }); const token = jwt.sign({ email }, SECRET, { expiresIn: "1h" }); res.json({ token }); });

Token ini yang nantinya dipakai untuk mengakses endpoint private.


4. Middleware Verifikasi JWT

Untuk melindungi endpoint, kita butuh middleware:

function auth(req, res, next) { const header = req.headers["authorization"]; const token = header && header.split(" ")[1]; if (!token) return res.status(401).json({ message: "Token tidak ada" }); jwt.verify(token, SECRET, (err, user) => { if (err) return res.status(403).json({ message: "Token tidak valid" }); req.user = user; next(); }); }

Dengan middleware ini, endpoint tertentu hanya bisa diakses user valid.


5. Membuat Endpoint Private

app.get("/profile", auth, (req, res) => { res.json({ message: "Ini data profile", user: req.user }); });

Tanpa token yang valid, user tidak bisa masuk ke endpoint ini.


Tips Keamanan JWT yang Sering Diabaikan

Penggunaan JWT kuat, tapi ada beberapa hal penting yang jangan pernah lo skip.

1. Jangan simpan token di localStorage

Risiko XSS tinggi.
Paling aman pakai HTTP-only cookie.

2. Pakai secret key panjang dan acak

Minimal 32 karakter.

3. Atur TTL token

1 jam adalah standar paling aman.

4. Gunakan refresh token

Untuk skala besar, wajib pakai mekanisme refresh token.

5. Hindari meletakkan data sensitif di payload

Payload JWT bisa dibaca siapa saja, karena cuma di-encode, bukan di-enkripsi.

Ini penting terutama dalam website development yang menyangkut data user.


Kapan JWT Cocok Digunakan?

JWT bukan untuk semua kasus. Lo cocok pakai JWT kalau:

  • bikin API RESTful,

  • bikin aplikasi multi-platform,

  • butuh autentikasi cepat tanpa session,

  • butuh scalable dan ringan.

Tapi kalau project lo tipe monolitik kecil dengan session server-side, session mungkin lebih cocok.


Kesalahan Umum Saat Implementasi JWT

Berikut beberapa kesalahan yang dulu juga sempat gue lakukan:

  • Token tidak diberi expiration

  • Menyimpan token di localStorage

  • Payload terlalu besar

  • Verifikasi middleware tidak modular

  • Menggunakan secret key pendek

Dengan menghindari kesalahan ini, sistem autentikasi lo akan jauh lebih aman.


Kesimpulan: JWT Adalah Senjata Wajib Backend Modern

Dalam perjalanan gue di dunia backend dan website development, JWT adalah salah satu konsep yang paling sering gue pakai. Alasannya jelas: simpel, cepat, ringan, dan fleksibel untuk berbagai aplikasi modern.

Mulai dari proyek kecil sampai API enterprise besar, JWT memberikan cara mudah untuk mengelola autentikasi user tanpa repot menyiapkan session server-side.

Dan setelah lo memahami dasar-dasarnya, JWT bisa jadi fondasi penting yang akan lo pakai di hampir semua project backend selanjutnya.

Komentar

Postingan populer dari blog ini

Belajar dari Kesalahan: Kisah Website yang Drop Trafiknya – Proses Pemulihan

7 Framework JavaScript Terpopuler Tahun 2025

Cara Menggunakan AI untuk Meningkatkan Pendapatan Website