NODE.JS session (1)

session 이란? : 사용자가 접속하는 동안 매 요청마다 유지되는 데이터의 집합

session : 서버에서 관리

session 설치 방법 :npm install express-session --save

config 적용 방법 : const sessionConfig = {

secret : "암호화 키",

resave : false,

saveUninitialized : true,

}

const 세션명 = require("express-session"); : 세션 가져오기

req.session.키값 = 밸류값 : 세션의 키값에 밸류를 설정

delete req.session.키값 : 하나의 세션을 삭제할 때 사용(delete 명령어)

req.session.destroy(); : 모드 세션을 삭제할 때 사용(destory 명령어)

npm install body-parser --save : body-parser 설치 

body-parser : post방식의 데이터를 가져올 때 사용

router.post(); : post방식으로 보낼 때 사용

* query를 사용한 get방식과 달리 post는 .body를 사용한다

app.use(session(config.sessionConfig)) : session의 config정보 적용

app.use(bodyParser.urlencoded()) : bodyPaser를 적용하는 역할

* bodyParser적용 후 router적용해야 한다

const index = (req, res) => {
  res.render("session/index");
};

const setSession = (req, res) => {
  req.session.name = "홍길동"; //세션의 키(name)은 홍길동이다
  req.session.age = 20;
  res.render("session/set_session");
};

const getSession = (req, res) => {
  const sessionValue = {
    name: req.session.name,
    age: req.session.age,
  };
  res.render("session/get_session", sessionValue);
};

const delSession = (req, res) => {
  //delete req.session.name; // 하나의 세션을 삭제할 때 delete 명령어 사용
  req.session.destroy(); // 모든 세션 삭제할 때 destroy 사용
  res.render("session/del_session");
};

const login = (req, res) => {
  res.render("session/login");
};

const loginCheck = (req, res) => {
  console.log(req.body);
  console.log(req.body.id);
  console.log(req.body.pwd);
  res.send();
}

module.exports = { index, setSession, getSession, delSession, login, loginCheck };

 

실행 결과

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

NODE.JS session (2)

const index = (req, res) => {
  res.render("session/index");
};

const setSession = (req, res) => {
  req.session.name = "홍길동"; //세션의 키(name)은 홍길동이다
  req.session.age = 20;
  res.render("session/set_session");
};

const getSession = (req, res) => {
  const sessionValue = {
    name: req.session.name,
    age: req.session.age,
  };
  res.render("session/get_session", sessionValue);
};

const delSession = (req, res) => {
  //delete req.session.name; // 하나의 세션을 삭제할 때 delete 명령어 사용
  req.session.destroy(); // 모든 세션 삭제할 때 destroy 사용
  res.render("session/del_session");
};

const login = (req, res) => {
  res.render("session/login", { username: req.session.userName });
};

const loginCheck = (req, res) => {
  console.log(req.body);
  console.log(req.body.id);
  console.log(req.body.pwd);

  const DBId = "aaa",
    DBPwd = "aaa",
    DBNick = "홍길동";
  if (DBId === req.body.id && DBPwd === req.body.pwd) {
    req.session.userName = DBId;
    req.session.nick = DBNick;
    res.redirect("/session/success");
  } else {
    let msg = scriptMsg("로그인 실패", "/session/login");
    res.send(msg);
  }
};

const scriptMsg = (sMsg, sUrl) => {
  return `<script>
    alert("${sMsg}");
    location.href="${sUrl}";
  </script>`;
};
const success = (req, res) => {
  if (req.session.userName) {
    res.render("session/success", { nick: req.session.nick });
  } else {
    let msg = scriptMsg("로그인 먼저하세요", "/session/login");
    res.send(msg);
  }
};

const logout = (req, res) => {
  req.session.destroy(() => {
    console.log("모든 세션을 만료합니다");
  });
  res.redirect("/session/login");
};

module.exports = {
  index,
  setSession,
  getSession,
  delSession,
  login,
  loginCheck,
  success,
  logout,
};

 

실행 결과

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

NODE.JS fileStore

파일 형태로 데이터 저장하는 기능 설치 : npm install session-file-store

const  fileStore = require("session-file-store")(session);

config.sessionConfig.store = new fileStore();

'node.js' 카테고리의 다른 글

NODE.JS 활용 (5)  (0) 2024.04.04
NODE.JS 활용 (4)  (0) 2024.04.02
NODE.JS 활용 (2)  (0) 2024.04.01
NODE.JS 활용  (0) 2024.03.29
NODE.JS 기초  (0) 2024.03.28

+ Recent posts