Session

서정준·2022년 6월 1일
0

NPM

목록 보기
1/4
post-thumbnail

session을 알기 전에 먼저 cookie에 대해 알아야 한다.

쿠키(cookie)란?

  • 쿠키(cookie)란 웹 사이트에 접속할 때 서버에 의해 사용자의 컴퓨터에 저장되는 정보를 의미합니다.
  • 웹 사이트는 이렇게 저장된 사용자의 정보를 클라이언트(client) 측의 컴퓨터에 남겨서 필요할 때마다 재사용합니다.
  • 사용자의 컴퓨터에 마치 과자 부스러기가 남아 있는 것과 같다고 해서 '쿠키(cookie)'라는 명칭이 붙었습니다.
  • 사용자의 정보가 컴퓨터에 고스란히 남기 때문에 사생활 침해의 우려가 있으며, 보안과 관련된 이슈를 가지고 있습니다.

세션(session)이란?

  • 세션(session)이란 웹 사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법을 의미합니다.
  • 사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지를 세션이라고 합니다.
  • 쿠키는 클라이언트 측의 컴퓨터에 모든 데이터를 저장한다면, 세션은 서비스가 돌아가는 서버 측에 데이터를 저장하고, 세션의 키값만을 클라이언트 측에 남겨둡니다.
  • 이러한 세션은 보안에 취약한 쿠키를 보완해주는 역할을 하고 있습니다.
  • 즉, 브라우져가 서버 방문시 서버는 세션 id를 cookie에게 주고 cookie는 그 id를 저장하고 있다가 서버 재 방문시 이 id를 이용하게 됩니다.

express-session

  • Express용 세션 미들웨어

설치 방법은?

command 창에 아래의 명령을 입력한다.

npm i express-session

사용 방법은?

  • Example
	import express from "express";
    import session from "express-session";

	const app = express();

    app.use(
    session({
      secret: '비밀 정보',
      resave: true,
      saveUninitialized: true,
    })
);
  • secret
    • This is the secret used to sign the session ID cookie.
    • Using a secret that cannot be guessed will reduce the ability to hijack a session
  • resave
    Forces the session to be saved back to the session store, even if the session was never modified during the request
  • saveUninitialized
    Forces a session that is "uninitialized" to be saved to the store.

connect-mongo

  • Typescript로 작성된 Express용 MongoDB 세션 저장소.

세션을 MongoDB 저장하는 이유는?

  • The default server-side session storage, MemoryStore, is purposely not designed for a production environment.
  • sever 종료 시 session 정보가 사라지는데 MongoDB에 저장함으로써 session 정보를 불러올 수 있다.
  • 한 예시로 사용자가 로그아웃을 하지 않고 실수로 sever를 종료했을 경우, 재 방문 시 로그인 상태가 계속 유지되는 경우 session을 저장하고 있는 상태이다.

설치 방법은?

command 창에 아래의 명령을 입력한다.

npm i connect-mongo

사용 방법은?

  • 위 express-session 예시 코드에서 아래와 같은 코드를 추가한다.
    		store: MongoStore.create({mongoUrl://127.0.0.1:27017/wetube})
  • Example
	import express from "express";
    import session from "express-session";
    import MongoStore from "connect-mongo";

    const app = express();

    app.use(
    session({
      secret: '비밀 정보',
      resave: true,
      saveUninitialized: true,
      store: MongoStore.create({mongoUrl://127.0.0.1:27017/wetube})
    })
);

자료 출처
http://www.tcpschool.com/php/php_cookieSession_cookie
https://github.com/expressjs/session
https://www.npmjs.com/package/connect-mongo
http://expressjs.com/en/resources/middleware/session.html

profile
통통통통

0개의 댓글