본문 바로가기
Node

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

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

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

 

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

 

728x90
반응형

댓글