필요한 패키지
Node.js 를 이용한 라우팅을 위한 패키지
express.js 사용시 세션/쿠키 관리를 편하게 하기 위한 패키지
cookie-session으로 대체 할 수 도 있지만 express-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 |