본문 바로가기
Node

[Node] 세션의 사용법과 express-session 미들웨어 설치

by 신입같은 3년차 2017. 12. 24.

안녕하십니까 오늘은 즐거운 크리스마스 이브입니다. 크리스마스에도 쉬지않고 블로깅을 해봤습니다.

 

오늘은 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는 공부를 하면서 적는거이기 때문에 정확하지 않은정보를 적을수도있으니 본인이 알고계신 정보와 다르다면 지적 부탁드리겠습니다.
 
감사합니다!!
 

 

반응형

댓글