A. Pengenalan JWT (JSON Web Token)
JWT (JSON Web Token) adalah metode autentikasi yang digunakan untuk
mengamankan komunikasi antara frontend dan backend.
JWT digunakan setelah user berhasil login, lalu server akan memberikan
token sebagai bukti identitas user.
Fungsi JWT
1. Sebagai bukti bahwa user sudah login
2. Mengamankan endpoint API (protected route)
3. Menggantikan session (tanpa perlu simpan data di server)
4. Membawa informasi user (id, email, dll) dalam bentuk terenkripsi
Cara Kerja JWT
1. User login ke sistem
2. Server memverifikasi email & password
3. Server membuat token JWT
4. Token dikirim ke frontend
5. Frontend menyimpan token
6. Setiap request ke backend harus menyertakan token
7. Server memverifikasi token sebelum memberi akses
Persiapan di Backend (setelah install JWT)
Alur umum: Register → Login → JWT → Protect Route
backend/
middlewares/
auth.js <-- untuk verifikasi token JWT
Persiapan di Frontend
1. Siapkan tempat penyimpanan token:
- localStorage / sessionStorage
2. Setiap request ke backend harus menyertakan token
3. Buat proteksi halaman (private route)
B. Bcrypt (hash password)
Bcrypt dipakai untuk meng-hash password sebelum disimpan ke database.
Kenapa penting:
- Password TIDAK boleh disimpan sebagai teks biasa (plain text)
- Saat login, bandingkan password input dengan hash yang tersimpan
Alur singkat register:
1. User kirim password dari frontend
2. Backend hash dengan bcrypt (salt otomatis)
3. Simpan hash ke database
Alur singkat login:
1. User kirim email + password
2. Backend ambil hash user dari database
3. bcrypt.compare(password_input, hash_di_db)
Paket umum di Node:
bcrypt atau bcryptjs. Ikuti dokumentasi resmi untuk versi yang kamu install.
Catatan Penting JWT & Keamanan
- JWT bersifat stateless (server tidak menyimpan session klasik)
- Token memiliki masa expired
- Jangan pernah membagikan JWT_SECRET
- Gunakan HTTPS di production
- Password user: hash dengan bcrypt, bukan disimpan apa adanya