[Node.JS] Session

Yubin.Heo·2020년 11월 27일
2

🎄 Node.JS 🎄

목록 보기
2/3

🧶 쿠키와 세션의 차이

쿠키(Cookie)란, 클라이언트 측(브라우저)에서 관리되는
작은 기록 정보 파일을 의미합니다.
쿠키에는 사용자 인증이 유효한 시간을 명시할 수 있으며,
한 번 유효 시간이 정해지면 브라우저를 끄더라도 인증이 유지된다는 특징이 있습니다.

쿠키는 클라이언트인 Local 에서 저장되기 때문에, 누구나 쿠키의 값을 확인할 수 있어
값을 위변조하기 쉽다는 단점이 있습니다.

그러나 세션(Session)은 쿠키와 다르게 서버에 저장되기 때문에,
서버에 데이터를 저장하고 Web Broswer는 세션의 ID만 가지고 있습니다.
세션의 ID는 sid 라고 하는 식별자 입니다.
위의 특성 때문에 세션은 클라이언트 측에서 쉽게 위변조할 수 없습니다.

🎳 Session 모듈 설치

npm install -s express-session

🎪 Session 기본 설정

const session = require('express-session');
const app = express();

app.use(session({
  secret: 'secretWords',
  resave: false,
  saveUninitialized: true
}));
  • sercret: 반드시 필요한 옵션으로 세션을 암호화하여 저장됩니다.
  • resave: 세션이 변경되지 않아도 계속 덮어씌우기 됩니다.
    기본 값은 true이지만 false로 사용할 것을 권장하고있습니다.
  • saveUninitialized: 세션을 초기값이
    지정되지 않은 상태에서도 미리 만들어 저장합니다.

위 과정을 거치면 Request 에서 Session을 사용할 수 있습니다.

💍 실습 - Session 사용하기

router.get("/administrator", function (req, res, next) {
        if(req && req.session && req.session.count) { 
        	// 세션이 존재하는 경우
            req.session.count = req.session.count + 1;
        } else { 
        	// 세션이 존재하지 않는 경우
            req.session.count = 1;
        }
        console.log(req.session.count);
    });

위 코드로 실행해보면 새로고침 할 때 마다 Console에 찍히는 값이
계속 증가하는 것을 알 수 있습니다.

세션이 존재하는지의 여부는

if(req && req.session && req.session.count) { ... }

위 코드로 작성하면 됩니다.

🎡 Session 삭제

req.session.destroy(function(err) {
  // 삭제 후 실행할 작업 기술
})

🎏 Session 저장

req.session.save(function(err) {
  // 저장 후 실행할 작업 기술
})

🕶 참고자료

0개의 댓글