express - session 메소드

Jaemin Jung·2021년 8월 8일
0

Today I Learned

목록 보기
60/62
post-thumbnail

req.session

세션은 쿠키처럼 사용자의 정보를 그대로 값으로 가지지 않고 cid나 sessionId만을 쿠키에 넣고,
서버에서 관리하기 때문에 탈취해도 값을 알아내기가 어렵다.
express-session은 node.js에서 이를 가능하게 해준다.

const express = require('express');
const app = express();
const session = require('express-session');	//세션관리용 미들웨어
const fileStore = require('session-file-store')(session);

app.use(session({
  httpOnly: true,	//자바스크립트를 통해 세션 쿠키를 사용할 수 없도록 함
  secure: ture,	//https 환경에서만 session 정보를 주고받도록 처리
  secret: 'secret key',	//암호화하는 데 쓰일 키
  resave: false,	//세션을 언제나 저장할지 설정함
  saveUninitialized: true,	//세션이 저장되기 전 uninitialized 상태로 미리 만들어 저장
  cookie: {	//세션 쿠키 설정 (세션 관리 시 클라이언트에 보내는 쿠키)
    httpOnly: true,
    secure: true
  },
  store: new fileStore()
}));

app.use로 session 미들웨어를 쓰면 되는데, session 미들웨어는 매개변수로 객체를 받는다.
객체 안에는 secret, resave, saveUninitialized, cookie, store 등 여러 가지 옵션이 있다.

req.session으로 세션 객체에 접근할 수 있으며, 생성도 가능하다.

req.session.세션명 = 세션value;

사용해본 method

req.session.save(callback)

세션을 저장소에 저장하고 저장소의 내용을 메모리의 내용으로 바꿔줌
HTTP 응답이 끝날 때 자동으로 후출되어서 일반적으로는 굳이 호출할 필요가 없다.
redirects를 할때에는 유용하게 사용한다고 하는데 아직 와닿지는 않는다.

req.session.save(function(err) {
  // session saved
})

req.destroy(callback)

세션을 파괴하고 req.session속성 을 설정 해제한다.
스프린트에서는 로그아웃을 구현할때 이 메소드를 사용했다.

req.session.destroy(function(err) {
  // cannot access session here
})

참고 사이트

https://www.npmjs.com/package/express-session
http://expressjs.com/en/resources/middleware/session.html
https://dev-dain.tistory.com/68

profile
내가 보려고 쓰는 블로그

0개의 댓글