📖 Konsep Utama
- Authentication: verifikasi identitas (username/password, OAuth, dll).
- Authorization: menentukan hak akses setelah login.
- Session: data login disimpan di server, dihubungkan dengan cookie di browser.
- Cookie: penyimpanan kecil di browser untuk menyimpan session ID.
- JWT (JSON Web Token): alternatif session berbasis token yang dikirim di setiap request.
🔹 Contoh Session dengan Express
// app.js
const express = require("express");
const session = require("express-session");
const app = express();
app.use(express.json());
app.use(session({
secret: "rahasia",
resave: false,
saveUninitialized: true,
cookie: { secure: false } // true jika pakai HTTPS
}));
// Login sederhana
app.post("/login", (req, res) => {
const { username, password } = req.body;
if (username === "admin" && password === "1234") {
req.session.user = username;
res.send("Login berhasil");
} else {
res.status(401).send("Login gagal");
}
});
// Route proteksi
app.get("/dashboard", (req, res) => {
if (req.session.user) {
res.send(`Selamat datang ${req.session.user}`);
} else {
res.status(403).send("Harus login dulu");
}
});
app.listen(3000, () => console.log("Server jalan di http://localhost:3000"));
🔹 Contoh JWT
const jwt = require("jsonwebtoken");
// Membuat token
const token = jwt.sign({ user: "admin" }, "rahasia", { expiresIn: "1h" });
// Verifikasi token
jwt.verify(token, "rahasia", (err, decoded) => {
if (err) console.log("Token tidak valid");
else console.log(decoded.user);
});