webStorage나 cookie는 사용자(client)측에서 저장하는 자료이기 때문에, 보안상 취약하고 권장하지 않는다.
완전하게 안전한 정보전송이 이루어지는 것은 아직도 미완의 과제이지만, 현재 활용하는 방식은 다음과 같다.
cookie에 session id를 넣어 같이 전달하면, request Header를 통해 해당 id에 접근 및 session을 인증하는 과정을 구성할 수 있다.
cookie에 session id(식별자)와 함께 key, value 값으로 구성한 문자열
cookie와 마찬가지로 사용자 정보 저장 및 인증을 위해 저장하는, key & value로 이루어진 문자열 데이터이다.
cookie에 식별자(session id)를 넣어 보안성을 강화하고, 이를 해당 server/DB에 저장한다(윈도우를 닫기 전까지는 해당 정보를 저장, 탭을 닫으면 정보 소멸).
session에는 객체 형태로 다양한 option을 지정해줄 수 있고, 정보를 저장할 수도 있다.
const session = require('express-session');
cookie와 마찬가지로 session module을 설치하면 사용할 수 있다.
express middleware을 설정해서 req에서 data를 받아올 수 있도록 한다.
root directory가 구성이 완료된 후에 session을 구성해야 data 저장이 가능하다.
router.use('/', cookieParser());
router.get('/', (req, res) => {
res.render('jwt.html');
});
//session middleware
router.use(session({
secret: 'secretKey',
resave: false,
store: new FileStore()
}));
post request에서 전달받은 변수를 session 내부에 저장한다.
//console.log(req.body);
let {ID, PW} = req.body;
//session
req.session.userID = ID;
req.session.userPW = PW;
위와 같이 별도로 비구조화를 하지 않아도, 입력받은 값을 req.session을 통해 바로 저장할 수 있다.
session 내 저장한 변수에 접근하여 data를 조회한다.
router.post('/check', (req, res) => {
//check data from session
console.log('-----------------');
console.log('ID from session');
console.log(req.session.userID);
console.log('PW from session');
console.log(req.session.userPW);
console.log('-----------------');
session 내부에 ID/PW가 정상적으로 저장되었는지 확인한다.
express-session 개념
https://berkbach.com/node-js%EC%99%80-cookie-session%EC%9C%BC%EB%A1%9C-%EC%82%AC%EC%9A%A9%EC%9E%90-%EC%A0%95%EB%B3%B4-%EC%A0%80%EC%9E%A5-part-2-dbe84c2f13e4
https://m.blog.naver.com/pjok1122/221555161680
https://dev-dain.tistory.com/68
cookie / session 참고
https://okky.kr/article/605454
session undefined 관련
https://jaroinside.tistory.com/15