• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

session 질문입니다.

22.09.22 00:56 작성 조회수 89

0

const express = require("express");
const path = require("path");
const morgan = require("morgan");
const cookieParser = require("cookie-parser");
const session = require("express-session");

const app = express();

app.set("port", process.env.PORT || 3000); // 전역 변수 느낌

app.use(morgan("dev"));
app.use(cookieParser("zerochopassword"));
app.use("/login", (req, res, next) => {
  console.log('로그인 완료 세션 지급!');
  session({
    resave: false,
    saveUninitialized: false,
    secret: "zerochopassword",
    cookie: {
      httpOnly: true,
    },
    name: "connect.sid",
  })(req, res, next);
});
app.use("/", (req, res, next) => {
  if (req.session) {
    express.static(path.join(__dirname, "public"))(req, res, next); // 미들웨어 확장법
  } else {
    next();
  }
});

제가 원했던건 /login url을 방문한 사용자만 session을 지급 받고 세션이 있어야 정적 리소스를 받아올 수 있게 해주고 싶었습니다.

/login url을 방문하면 cookie에 connect.sid가 저장되는 것을 보고 원하던 대로 작동할 줄 알았지만 이후 / url을 방문하니 req.session은 undefined 였습니다. 이유가 궁금합니다.

 

답변 1

답변을 작성해보세요.

1

9장 passport 학습 후에 하셔야 합니다. 저렇게는 불가능합니다.