네이처리 노트
[Node.js] 쿠키와 세션 | NPM express-session과 session-file-store 본문
728x90
반응형
공부하면서 정리한 내용입니다
참고한 내용은 링크를 확인해주세요
보안 및 세션
쿠키(Cookie)란, 클라이언트 측(브라우저)에서 관리되는작은 기록 정보 파일을 의미합니다.
쿠키에는 사용자 인증이 유효한 시간을 명시할 수 있으며,한 번 유효 시간이 정해지면 브라우저를 끄더라도 인증이 유지된다는 특징이 있습니다. 쿠키는 클라이언트인 Local 에서 저장되기 때문에, 누구나 쿠키의 값을 확인할 수 있어값을 위변조하기 쉽다는 단점이 있습니다. 그러나 세션(Session)은 쿠키와 다르게 서버에 저장되기 때문에,서버에 데이터를 저장하고 Web Broswer는 세션의 ID만 가지고 있습니다.
세션의 ID는 sid 라고 하는 식별자 입니다.
📦 Express-session
이 패키지는 저장소를 따로 가지지 않아서 이것만으로는 세션이라는 기능을 제공할 수 없다.
express-session의 공식 사이트에는 함께 사용할 수 있는 패키지들을 안내하고 있다.
🔗 저장소 종류 ⭐저장소 종류로 mysql,file, memory가 있는데 memory는 권장하지 않음
🔗 mysql 저장소 사용예제 및 keyboard cat 🐈
📦 session-file-store
이 모듈은 package.json 위치에 sessions폴더를 자동으로 생성하고 쿠키(정보가 담긴 파일)를 생성 및 삭제한다.
ES6버전 import사용한 예제
import express, { json, urlencoded } from "express";
import session from "express-session";
import session_store from "session-file-store";
const exp = express();
let random_key = "keyboardCat";
let FileStore = session_store(session);
let fileStoreOption = { reapInterval: 86400 }; // expired session (seconds)
let cookieOption = { // 디폴트값 존재함
path : "/cookieShop/", // 세션폴더를 생성하고 쿠키저장할 경로를 지정할수있다.
maxAge: 604800000 // 쿠키만료일 ( ms )
secure: false, // use https
}
exp.use(cookieParser(random_key));
exp.use(session(
{
name : "sessionID", // this session id, used clear cookie from logout
secret : random_key, // 암호화할 랜덤 값
proxy : true,
resave : false,
saveUninitialized : true, // 세션 자동생성 여부, 디폴트true 전체페이지에서 쿠키생성
store : new FileStore(fileStoreOption), //옵션없어도 디폴트있음
cookie : cookieOption,
}
));
saveUninitialized가 false고 수동으로 생성하는 경우
// save.js
request.session.user_nick = ${nick};
request.session.in_time = Date.now();
request.session.save((err)=>{
if (err) throw err;
response.json();
});
// destroy.js
response.clearCookie("keyboardCat");
request.session.destroy((err)=>{
if (err) throw err;
response.json();
});
Error
브라우저 application에 cookie적용이 안된다. 알고보니 세션이 매번 새로생성된다.
728x90
반응형
'개발기록 > Node.js' 카테고리의 다른 글
Comments