안녕하십니까 오늘은 즐거운 크리스마스 이브입니다. 크리스마스에도 쉬지않고 블로깅을 해봤습니다.
오늘은 Node.js의 세션의 사용법과 설치를 해보려고 합니다. 그럼 시작해보겠습니다.
전시간에 했던 cookie-parser와 같이 세션을 사용하기위해서도 모듈이 필요합니다.
커맨드창을 열고 npm install --save express-session 을 입력해줍니다. 그러면 다음과같이 설치되는것을 확인할 수 있습니다.
express-session@1.15.6이 제대로 설치 또는 업데이트가 된것을 확인할 수 있습니다. 그럼 코드를 확인해보겠습니다.
/** * Created by yunjin on 2017-12-24. */ let port = process.env.port || 3000; let express = require('express'); let app = express(); let sessionParser = require('express-session'); let router = express.Router(); /** express-session 미들웨어를 사용하기위해 app에 등록*/ app.use(sessionParser({ secret: 'yunjin0925', resave: true, saveUninitialized: true })); app.use('/', router); /** session 확인 */ router.route('/confirmSession').get(function (req, res) { console.log('세션을 확인해보자!!'); let msg = `세션이 존재하지 않습니다.` if (req.session.user) { msg = `${req.session.user.name}님의 나이는 ${req.session.user.age}살 입니다. 세션의 생성된 시간 : ${req.session.user.createCurTime}`; } res.send(msg); }); /** session 생성 */ router.route('/').get(function (req, res) { console.log('루트접속'); if(req.session.user){ console.log(`세션이 이미 존재합니다.`); }else{ req.session.user = { "name" : "Master Yunjin", "age" : 25, "createCurTime" : new Date() } console.log(`세션 저장 완료! `); } res.redirect(`/confirmSession`); }); /** session 삭제 */ router.route('/destroySession').get(function(req,res){ req.session.destroy(); console.log(`session을 삭제하였습니다.`); res.redirect(`/confirmSession`); }); app.listen(port, function () { console.log(`${port}번 포트로 서버가 작동합니다.`); })
저는 이번 세션에대해서 3개의 URI로 나눴습니다.
session 확인 , session 생성 , session 삭제 3개로 구성되어있습니다.
9행
- express-session 모듈을 require하여 객체를 반환하여 sessionParser변수에 담습니다.
13~17행
- secret - 쿠키를 임의로 변조하는것을 방지하기 위한 값. 이 값으로 세션을 암호화 하여 저장.
resave - 세션을 언제나 저장할 지 정하는 값 false를 권장하지만 필요에 따라 true로 설정
saveUninitialized - 세션이 저장되기전에 uninitialized 상태로 미리 만들어 저장.
22~31행
- session에 user라는 값이 있나 없나를 조건문을 통해 확인하고 존재하지 않다면 존재하지 않는다. 있다면 이름 나이 시간을 표시합니다.
34~49행
- 직접적으로 세션을 저장하는 로직을 담당합니다. 세션의 존재 유무에 따라 새션을 생성한후 /confirmSession 페이지로 리다이렉트 합니다.
51~56행
- /destroySession 경로로 접근하게 되면 세션을 삭제한후 /confirmSession 페이지로 리다이렉트 시킵니다.
이 세션을 응용한다면 로그인/로그아웃을 구현할 수 있을것 같습니다.
쿠키와 세션 둘다 상당히 사용하기 쉽고 이해하기 쉽게 잘만들어진것같습니다.
하지만 쿠키와 세션을 모르신다면 꼭 차이점에대해 공부해보시길 권장하겠습니다.
전시간과 오늘까지 합쳐서 쿠키와 세션을 마무리 지어봤습니다.
저도 Node는 공부를 하면서 적는거이기 때문에 정확하지 않은정보를 적을수도있으니 본인이 알고계신 정보와 다르다면 지적 부탁드리겠습니다.
감사합니다!!
반응형
'Node' 카테고리의 다른 글
[Node] Node + Mongodb (mongoose 사용 ) (0) | 2019.06.19 |
---|---|
[Node.js] Node + Redis 연동 후 테스트 (1) | 2019.06.19 |
[Node] 쿠키의 사용법과 cookie-parser 미들웨어 설치 (0) | 2017.12.24 |
[Node] fs 모듈 - 첫번째 파일 읽기 (0) | 2017.12.14 |
[Node]url 관련 모듈 사용해보기 (0) | 2017.12.14 |
댓글