Express 4 에서는 3에서와는 다르게 session을 사용함
로그인시 세션에 사용자 정보를 설정하여 다시 로그인 호출시 로그인 성공 화면으로 넘어가도록 구현한 샘플
1. 설치
sudo npm install express-session
2. 사용
- app.js
| 
var express = require('express'); 
var session = require('express-session'); 
var routes = require('./routes/index'); 
var users = require('./routes/users'); 
var member = require('./routes/member'); 
var personal = require('./routes/personal'); 
var office = require('./routes/office'); 
var app = express(); 
app.use(session({ 
  secret: 'keyboard cat', 
  resave: false, 
  saveUninitialized: true, 
})); 
app.use('/', routes); 
app.use('/users', users); 
app.use('/member', member); 
app.use('/personal', personal); 
app.use('/office', office); | 
- member.js
| 
var CONSTS = require('./consts'); 
var express = require('express'); 
var router = express.Router(); 
var MemberProvider = require('./db/db-member.js').MemberProvider; 
var app = express(); 
var memberProvider = new MemberProvider(); 
// 로그인 화면 호출 
router.get('/loginc', function(req, res, next) { 
    // 이미 로그인 여부를 세션에 user_id가 있는지로 확인 
    var userInfo = req.session.userInfo; 
    var user_id = ''; 
    try { 
        user_id = userInfo.user_id; 
    } catch (e) { } 
    console.log('member - session : ' + userInfo); 
    if (user_id == '') { 
        res.render('./member/login', { 
            title: '로그인', 
            logintype: CONSTS.MEMBER_TYPE.OFFICE}); 
    } else { 
        res.redirect('/home' + userInfo.mem_type); 
    } 
}); 
// 로그인 실행 
router.post('/login', function(req, res, next) { 
    console.log(req.body); 
    var vId = req.body.user_id; 
    var vPwd = req.body.password; 
    var datas = [vId, req.body.mem_type]; 
    memberProvider.selectSingleQueryByID("selectInfo", datas, function(err, memberInfo) { 
        console.log(memberInfo); 
        var rtnDatas = CONSTS.getErrData('0000'); 
        if (memberInfo == null) { 
            rtnDatas = CONSTS.getErrData('E001'); 
        } else if (memberInfo.user_password != vPwd) { 
            rtnDatas = CONSTS.getErrData('E002'); 
        } else { 
            // 세션에 값을 설정함. 
            var userInfo = { 
                user_id: memberInfo.user_id, 
                mem_type: memberInfo.mem_type}; 
            req.session.userInfo = userInfo; 
        } 
        console.log(rtnDatas); 
        res.send(rtnDatas); 
    }); 
}); 
// 로그아웃 
router.get('/logout', function(req, res, next) { 
    // 세션을 삭제함. 
    req.session.destroy(function(err) { 
        res.redirect('/'); 
    }); 
}); | 
| 이 글은 Evernote에서 작성되었습니다. Evernote는 하나의 업무 공간입니다. Evernote를 다운로드하세요. | 
 
댓글 없음:
댓글 쓰기