static / express-session 미들웨어

박찬효·2023년 3월 7일
0
post-custom-banner

static 미들웨어

static 미들웨어는 express에서 제공하는 기본 미들웨어 이며, express 객체 안에서 꺼내 바로 사용할 수 있다.

//app.use("요청경로", express.static('실제경로')));

app.use("/", express.static(path.join(__dirname, "public")));
  • 이 경우 실제 서버의 폴더 경로에는 public이 들어 있더라도 요청주소에는 public이 들어있지 않다.

  • 서버의 폴더 경로와 요청 경로가 다르므로 외부인이 서버의 구조를 쉽게 파악할 수 없으며, 이는 보안에도 큰 도움이 된다.

  • 또한 정적 파일들을 알아서 제공해주기 때문에 만약 요청 경로에 해당하는 파일이 없으면 알아서 next를 호출한다.

  • 미들웨어 간의 순서도 중요하다. 만약 파일을 발견했다면 다음 미들웨어는 실행되지 않는다.

express-session 미들웨어

세션 관리용 미들웨어, 로그인 등의 이유로 세션을 구현하거나, 특정 사용자를 위한 데이터를 임시적으로 저장해둘 때 매우 유용하다.

세션은 사용자별로 req.session객체 안에 유지된다.

app.use(cookieParser(process.env.COOKIE_SECRET));
// session : 요청마다 개인의 저장공간을 만들어준다.
app.use(
  session({
    resave: false,
    saveUninitialized: false,
    secret: process.env.COOKIE_SECRET,
    cookie: {
      httpOnly: true,
      secure: false,
    },
    name: "session-cookie",
  })
);
  • resave : 요청이 왔을 때 세션에 수정사항이 생기지 않아도 다시 저장할지 여부를 뜻한다.

  • saveUninitialized : 세션에 저장할 내역이 없더라도 세션을 저장할지 여부를 뜻한다.

  • secret : 쿠키 시크릿과 동일

  • name : 기본은 connect.sid 이다. 서명되어있기때문에 읽을수없는 문자열로 바뀌어있다.

미들웨어 확장법

// 미들웨어 확장법
app.use("/", (req, res, next) => {
  if (req.session.id) {
    express.static(path.join(__dirname, "public"))(req, res, next);
  } else {
    next();
  }
});

만약 로그인한 사람한테만 보여주고싶다면 static 실행 아니라면 next로 다음으로 넘어감

profile
개발자가 되기 위한 1인
post-custom-banner

0개의 댓글