session.jsconst express = require("express");
const session = require("express-session");
const app = express();
const PORT = 8080;
app.set("view engine", "ejs");
// session 미들웨어 등록
app.use(
session({
secret: "secret Key",
resave: false,
saveUninitialized: false,
cookie: {
httpOnly: true,
maxAge: 10 * 60 * 1000, // 10분짜리 세션 쿠키
},
}),
);
app.get("/", (req, res) => {
res.render("session");
});
// 세션 설정
app.get("/set", (req, res) => {
req.session.name = "allie";
res.send("session 설정 완료");
});
// 세션 확인(가져오기)
app.get("/get", (req, res) => {
console.log(req.session);
res.send({ id: req.sessionID, name: req.session.name });
});
// 세션 삭제
app.get("/destroy", (req, res) => {
req.session.destroy((err) => {
if (err) throw err;
res.send("세션 삭제 완료");
});
});
app.listen(PORT, () => {
console.log(`http://localhost:${PORT}`);
});
세션 미들웨어 등록:
secret: 세션 데이터를 암호화할 때 사용되는 키값.resave: 세션이 수정되지 않으면 저장하지 않음.saveUninitialized: 저장할 데이터가 없어도 세션을 초기화.cookie: 세션 쿠키의 옵션 설정 (HTTPOnly, 만료 시간 등).세션 설정:
/set: 클라이언트의 세션에 name: allie 값을 저장.세션 확인:
/get: 세션 ID와 저장된 데이터를 조회.세션 삭제:
/destroy: 세션 데이터를 삭제.session.ejs<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>session</title>
</head>
<body>
<h1>session 확인하기</h1>
<a href="/set">세션 설정</a>
<a href="/get">세션 확인</a>
<a href="/destroy">세션 삭제</a>
</body>
</html>
/set 경로로 이동하여 세션 설정./get 경로로 이동하여 현재 세션 확인./destroy 경로로 이동하여 세션 삭제.세션 관리 시스템을 활용하면 사용자 로그인 상태나 일시적인 데이터 저장 등을 쉽게 구현할 수 있다.