
Fungsi Satpam Penjaga Pintu Khusus (Middleware)
Kita punya Endpoint GET /api/profil-rahasia. Jika kita biarkan telanjang, siapapun di internet bisa membuka data ini. Kita harus memasang Middleware (Fungsi Penengah) yang akan menyetop siapapun yang tidak membawa Token JWT valid.
Membuat Fungsi Middleware
Buat fungsi terpisah di atas rute-rutemu. Tugas fungsi ini 3: Mencegat, Mengecek KTP, dan Mempersilakan masuk (next()) jika valid.
// Fungsi Satpam (Auth Middleware)
function verifikasiToken(req, res, next) {
// 1. Ambil KTP dari kantong pengunjung (Header HTTP)
const headerAuth = req.headers['authorization'];
if (!headerAuth) {
return res.status(403).json({ pesan: "Dilarang masuk! Tidak bawa Token." });
}
// Token biasanya dikirim berformat: "Bearer eyJhbGci..."
// Kita pisahkan (split) spasi untuk mengambil bagian tokennya saja
const token = headerAuth.split(' ')[1];
try {
// 2. Cek keaslian Tanda Tangan JWT menggunakan Kunci Rahasia Server
const dataDecoded = jwt.verify(token, process.env.JWT_SECRET);
// 3. Titipkan data ID pengguna (dari Payload) ke dalam Request
// agar bisa dipakai oleh fungsi selanjutnya!
req.userAuth = dataDecoded;
// 4. Silakan lewat!
next();
} catch (error) {
return res.status(401).json({ pesan: "Token palsu atau sudah kadaluarsa!" });
}
}Menempelkan Satpam di Pintu Route Rahasia
Sekarang, bagaimana cara memakai Satpam tadi? Cukup sisipkan nama fungsinya DI TENGAH-TENGAH (sebelum arrow function) pada rute yang ingin kamu kunci.
// Perhatikan posisi kata 'verifikasiToken'
app.get('/api/profil-rahasia', verifikasiToken, async (req, res) => {
// KITA TAHU PASTI SIAPA YANG LOGIN BERKAT SATPAM TADI!
// Ingat kita menitipkan data di req.userAuth?
const userId = req.userAuth.userId;
// Ambil data sensitif dari Database
const dataProfil = await prisma.user.findUnique({
where: { id: userId }
});
res.json({
pesan: "Selamat datang di area rahasia",
profil: dataProfil.nama
});
});Pengujian di Postman
Jika kamu langsung menembak /api/profil-rahasia lewat Postman, kamu akan ditolak (Error 403). Kamu harus meng-copy Token dari proses Login sebelumnya, lalu memasukkannya ke tab Authorization di Postman (Pilih tipe Bearer Token), barulah kamu bisa masuk!
Selamat! 🎉
Kamu baru saja menyelesaikan seluruh alur (Full Lifecycle) Backend Development: dari inisialisasi Server, membuat *Database*, *Routing* CRUD, Hashing Password, hingga Autentikasi JWT yang siap dipakai untuk aplikasi level *Production*!
Mau langsung pakai template?
Jelajahi template gratis dan premium di TampilKit untuk mempercepat proses development project kamu.
Browse Templates