Pernah nggak sih, login ke sebuah situs, lalu setelah pindah halaman langsung disuruh login lagi? Rasanya kayak ketemu temen lama tapi dia lupa nama kita.
Nah, biar backend Node.js kamu nggak pelupa, kita bisa pakai session!
Session ini semacam kartu keanggotaan buat pengguna. Jadi, setelah mereka login, backend bakal mengingat mereka sampai session berakhir atau mereka logout.
Yuk, kita bahas bareng penggunaan session di Node.js dengan CommonJS (CJS) dan ES Module (ESM)!
1. Apa Itu Session di Node.js?
Session adalah cara backend menyimpan data pengguna sementara di server.
Biasanya session dipakai buat:
- Mengingat pengguna yang login tanpa harus kirim ulang token di setiap request.
- Menyimpan preferensi pengguna selama sesi berlangsung.
- Menghindari pencurian data (lebih aman daripada token di localStorage!).
Bagaimana session bekerja?
- Pengguna login → Backend buat session & kasih session ID.
- Session ID ini disimpan di cookie di browser pengguna.
- Setiap request berikutnya, session ID dikirim ke server.
- Backend cek session ID → Kalau valid, pengguna tetap login!
2. Install Paket express-session
Sebelum mulai, kita perlu install library session di proyek Node.js kita:
npm install express-session
Ini bisa digunakan untuk CJS maupun ESM, jadi kita langsung lanjut ke implementasi!
3. Cara Menggunakan Session di Node.js (CommonJS - CJS)
Kalau proyek kamu masih pakai CommonJS (require
), ikuti langkah berikut:
Setup Dasar Session di Node.js (CJS)
Buka atau buat file server.js
, lalu tambahkan kode berikut:
const express = require("express");
const session = require("express-session");
const app = express();
// Middleware session
app.use(session({
secret: "rahasia-super-aman", // Kunci rahasia untuk enkripsi session
resave: false, // Jangan simpan ulang session kalau tidak berubah
saveUninitialized: true, // Simpan session meskipun belum ada data
cookie: { secure: false } // Set ke `true` kalau pakai HTTPS
}));
app.get("/", (req, res) => {
res.send("Welcome! Session aktif!");
});
// Simpan data di session
app.get("/login", (req, res) => {
req.session.user = "Oyen"; // Simpan nama pengguna di session
res.send("Kamu sudah login sebagai Oyen!");
});
// Ambil data session
app.get("/profile", (req, res) => {
if (req.session.user) {
res.send(`Halo ${req.session.user}, ini profilmu!`);
} else {
res.send("Kamu belum login!");
}
});
// Logout
app.get("/logout", (req, res) => {
req.session.destroy(() => {
res.send("Kamu sudah logout! Sampai jumpa!");
});
});
app.listen(3000, () => {
console.log("Server jalan di http://localhost:3000");
});
Bagaimana ini bekerja?
- Akses
http://localhost:3000/login
→ Session dibuat dengan user"Oyen"
. - Akses
http://localhost:3000/profile
→ Backend ingat siapa kamu! - Akses
http://localhost:3000/logout
→ Session dihapus, kamu jadi anonim lagi.
4. Cara Menggunakan Session di Node.js (ES Module - ESM)
Kalau kamu pakai ES Module (import
), jangan lupa tambahkan "type": "module"
di package.json
:
{
"type": "module"
}
Setup Session di Node.js (ESM)
Buat file server.mjs
dan masukkan kode ini:
import express from "express";
import session from "express-session";
const app = express();
// Middleware session
app.use(session({
secret: "rahasia-super-aman",
resave: false,
saveUninitialized: true,
cookie: { secure: false }
}));
app.get("/", (req, res) => {
res.send("Welcome! Session aktif!");
});
// Simpan data di session
app.get("/login", (req, res) => {
req.session.user = "Oyen";
res.send("Kamu sudah login sebagai Oyen!");
});
// Ambil data session
app.get("/profile", (req, res) => {
if (req.session.user) {
res.send(`Halo ${req.session.user}, ini profilmu!`);
} else {
res.send("Kamu belum login!");
}
});
// Logout
app.get("/logout", (req, res) => {
req.session.destroy(() => {
res.send("Kamu sudah logout! Sampai jumpa!");
});
});
app.listen(3000, () => {
console.log("Server jalan di http://localhost:3000");
});
Bedanya dengan CJS?
- Pakai
import
bukanrequire
. - Harus aktifkan ESM di
package.json
.
5. Opsi Lengkap express-session
(Supaya Backend Makin GG! )
Beberapa opsi penting dalam session:
Opsi | Kegunaan |
---|---|
secret |
Kunci rahasia buat enkripsi session. WAJIB DIISI! |
resave |
Kalau true , session disimpan ulang walau tidak berubah. Biasanya pakai false . |
saveUninitialized |
Kalau true , session tetap dibuat meskipun kosong. Biasanya true . |
cookie.secure |
Kalau true , hanya bisa diakses lewat HTTPS. Gunakan false saat di localhost! |
cookie.maxAge |
Batas waktu session dalam milidetik. |
store |
Simpan session di database (MongoDB, Redis, dll.). |
Contoh: Atur session biar kadaluarsa setelah 30 menit
app.use(session({
secret: "rahasia-super-aman",
resave: false,
saveUninitialized: true,
cookie: { maxAge: 30 * 60 * 1000 } // 30 menit
}));
Kesimpulan: Backend Jadi Gak Pelupa Lagi!
Session membantu backend "mengingat" pengguna tanpa perlu kirim ulang token di setiap request.
Bisa dipakai dengan CommonJS (CJS) atau ES Module (ESM).
Jangan lupa atur cookie & keamanan session, terutama kalau di production!
Bisa disimpan di database (Redis, MongoDB, dll.) biar lebih scalable!
Sekarang backend kamu jadi lebih cerdas dan gak gampang lupa pengguna!
#HappyCoding!
0 Comments