[TIL_2023.11.21] Node.JS express-session 모듈 학습

김효진·2023년 11월 21일
0
post-custom-banner

뉴스피드(news peed) 프로젝트에 들어왔다.
인증 기능을 구현하다가 인증 정보를 담는 모듈인 express-session에 대해 공부해 보았다.

express-session 모듈

세션관리를 쉽게 구현하기 위한 미들웨어 중 하나로 로그인 등을 하여 세션을 구현하거나, 특정 사용자를 위한 데이터를 임시적으로 저장해둘 때 매우 유용하다.

사용자의 브라우저에 쿠키를 사용하여 세션 ID를 할당하고, 이를 통해 서버에 저장된 데이터에 액세스할 수 있다. 이를 통해 사용자 데이터(예: 로그인 정보, 사용자 설정)를 저장하고 유지한다.

(세션은 사용자별로 req.session 객체 안에 유지된다고 한다.)

간단하게 말하면 사용자 정보 임시 저장소 느낌이랄까?

설정방법

app.js

app.use(cookieParser(process.env.COOKIE_SECRET);

app.use(session({
  secure: true,	// https 환경에서만 session 정보를 주고받도록처리
  secret: process.env.COOKIE_SECRET, // 암호화하는 데 쓰일 키, cookieParser와 똑같이 설정하는 것이 좋음.
  resave: false, // 세션을 언제나 저장할지 설정
  saveUninitialized: true, // 세션에 저장할 내역이 없더라도 처음부터 세션을 생성할지 설정
  cookie: {	//세션 쿠키 설정 (세션 관리 시 클라이언트에 보내는 쿠키)
    httpOnly: true, // http 상에서만 쿠키 사용 가능(js 통해 세션쿠키 사용 x) 
    Secure: true
  },
  name: 'session-cookie' // 세션 쿠키명 디폴트값은 connect.sid이지만 다른 이름을 줄수도 있다. 미입력시 connect.sid로 들어감
}))

세션에 데이터를 설정하면, 모든 세션이 설정되는게아니라, 요청 받은 고유의 세션 사용자의 값만 설정 된다. 즉, 개인의 저장 공간이 생긴 것과 같다.

세션은 서버 메모리에 저장되므로 서버가 다운되면 모두 초기화되어 없어진다.

실제 사용 예시는 사용자가 로그인을 하면 로그인 정보를 담은 세션 id가 할당되고 특정 로그인이 필요한 페이지를 방문할때 해당 정보를 가지고 접근할 수가 있으며 로그아웃의 경우 해당 세션 객체를 없애면 된다.
아래와 같이 req.session.destroy 명령어가 쓰인다.

req.session.destroy(err => {
  if (err) throw err;
  res.redirect(302, '/'); // 웹페이지 강제 이동 
});
profile
더 많은 사람들이 더 좋은 정보와 서비스를 누릴 수 있게!!
post-custom-banner

0개의 댓글