express-session

✒️ 2025-05-26 14:07 내용 수정

Node.js 교과서 개정 3판 내용 정리


npm i express-session
npm i express-mysql-session
옵션 설명
secret 쿠키 서명에 필요한 값, 최대한 길고 복잡하게 설정
.env 파일에 secret을 설정해서 process.env.COOKIE_SECRET으로 가져와서 설정할 수 있음
resave 요청이 올 때 세션에 수정 사항이 없어도 세션을 다시 생성할지 설정
saveUninitialized 세션에 저장할 내역이 없더라도 처음부터 세션을 생성할건지 설정
cookie 세션 쿠키에 대한 설정. 옵션은 cookie-parser에서 설정하는 옵션과 동일함
store 세션 저장위치. 기본 설정은 메모리에 세션을 저장하도록 되어 있기 때문에 서버 재시작 시 메모리 초기화로 인해 세션이 사라짐
배포 시에는 store를 DB에 연결하여 세션을 유지하도록 설정해야 함
const session = require('express-session') // express-session은 먼저 다운 받아야 한다

app.use(session({ // 세션을 사용하기 위한 옵션 설정
  secret: '1234567890!@#$%^&*()', // 쿠키 서명에 필요한 값
  resave : false, // 요청이 올 때 수정 사항이 없어도 세션을 다시 생성할지 설정
  saveUninitialized : false, // 세션에 저장할 내역이 없더라도 처음부터 세션을 생성할건지 설정
  cookie : { // 세션의 쿠키 설정
	  httpOnly : true, // 클라이언트에서 쿠키 확인 여부 설정
	  maxAge : 60000 * 1000
  }, // 1s = 1000ms (쿠키 저장시간 설정) = 1시간
  store : new MySQLStore( dbOption ), // 세션 저장위치, 예시는 MySQL
})) 
req.session.name = 'sessionName'; // 세션 등록
req.sessionID; // 현재 세션 ID 확인
req.session.destroy(); // 세션을 모두 제거

express_session_test 2.png


세션 정보 확인

// router 파일
router.get("/getLoginUser", (req, res)=>{
	console.log(req.user);
	console.log(req.session);
	console.log(req.sessionID);
});

express_session_test 1.png