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 |