Advertisement

Panduan Lengkap Session di Node.js (CJS & ESM) – Biar Backend Kamu Ingat Pengunjungnya!

 


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?

  1. Pengguna login → Backend buat session & kasih session ID.
  2. Session ID ini disimpan di cookie di browser pengguna.
  3. Setiap request berikutnya, session ID dikirim ke server.
  4. 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?

  1. Akses http://localhost:3000/login → Session dibuat dengan user "Oyen".
  2. Akses http://localhost:3000/profile → Backend ingat siapa kamu! 
  3. 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 bukan require.
  • 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! 

 

Post a Comment

0 Comments