필요한 패키지

express

Node.js 를 이용한 라우팅을 위한 패키지

 

express-session

express.js 사용시 세션/쿠키 관리를 편하게 하기 위한 패키지

cookie-session으로 대체 할 수 도 있지만 express-session가 보다 사용하기 편리하고 안정성 부분에도 더 낫다.

* 세션: 일반적으로 클라이언트를 식별하기 위해 사용되며, 로그인 이후 로그아웃 하기 전까지 정보 유지 및 관리 하는 것을 세션이라 부른다.

 

connect-mongodb-session

세션 정보를 MongoDB에 저장하기 위한 패키지

세션은 데이터의 유효성이 필히 보증되어야 만 하는 편이 아니기 때문에 Redis(connect-redis 를 통해)에 저장 할 수도 있지만 관리의 편리함을 위해 MongoDB로 통일 했다.

 

설치

# yarn add express-session connect-mongodb-session @types/express-session @types/connect-mongodb-session

 

사용법

import express from "express";
import session from "express-session";
import connectMongoDBSession from "connect-mongodb-session";

const app = express();

const MongoDBStore = connectMongoDBSession(session);
const mongoDBStore = new MongoDBStore({
	uri: "localhost:27017",
	collection: "sessions"
});

mongoDBStore.on("error", () => {
	// Error's here!
});

app.use(
	session({
		secret: "My secret code here!",
		resave: true,
		saveUninitialized: false,
		cookie: { maxAge: 3600000, httpOnly: true },
		store: mongoDBStore,
		rolling: true
	})
);

...

 

Session의 주요 옵션

secret: (필수 항목) 세션 발급에 필요한 비공개 키

resave: 세션을 저장하고 불러올 때 세션을 다시 저장 할 지 여부

saveUninitialized: 세션에 저장 할 때 초기화 여부

cookie:

- maxAge (쿠키 보관 기간, millisecond)

- httpOnly: 클라이언트에서 쿠키 확인 가능 여부 (true: 확인 불가능)

secure: http, https 환경에만 사용 가능하게 여부 (true: http, https 환경에만 가능, 타 프로그램 접근 불가)

store: 세션이 저장될 DB Store

rolling: 로그인 상태에서 다른 페이지로 이동 할 때마다 세션값에 변화(maxAge 시간 변경 등)를 줄 것인지 여부

 

다른 옵션은 이곳을 살펴보자.

'Developments > Node.js' 카테고리의 다른 글

POST 데이터 추출  (0) 2019.08.30
dotEnv를 활용한 환경 변수들 숨기기  (0) 2019.08.29
Helmet.js 를 이용한 서버 보안성 향상  (0) 2019.08.27
Fetch 대신 Axios  (0) 2019.08.27
No Session, Yes JWT!  (0) 2019.08.22

+ Recent posts