var express = require('express'), http = require('http'),

    path = require('path');

var router = express.Router();

// 라우터 객체 생성!

var ErrorH =  require('express-error-handler');

// 오류페이지 보내기 위한 핸들러 선언

var cookieParser = require('cookie-parser');

var expressSession = require('express-session');

var app = express();

var errh = ErrorH({

    static :{

        '404' : './public/404.html'

    }

});

app.use(ErrorH.httpError(404));

app.use(errh);

app.use(cookieParser());

app.use(expressSession({

    secret : 'my key',

    resave:true,

    saveUnintialized:true

}));

router.route('/process/product').get(function(req,res){

        console.log('product 호출');

        if(req.session.user){

            res.redirect('/public/product.html');

        }else{

            res.redirect('/public/login2.html');

        }

    });

router.route('/process/showCookie').get(function(req, res){

        console.log('/process/showCookie 호출');

        res.send(req.cookie);

        });

router.route('/process/setUserCookie').get(function(req,res){

    console.log('setuser 호출');

    res.cookie('user', {

        id :'mike',

        name :'sosi',

        authorized:true

    });

    res.redirect('/process/showCookie');

});


router.route('/process/login/').post(function(req,res){

    console.log('process/login check');

    var paramName = req.params.name;

    // 얘는 토큰이라 부른다.

    var paramId = req.body.id||req.query.id;

    var parPass = req.body.pass || req.query.pass;

    console.log('process/login check222');

    if(req.session.user){

        console.log('already login');

        res.redirect('/public/product.html');

    }else{

        console.log('process/login check333');

        req.session.user={

        id : paramId,

        name :'sosi',

        authorized:true

        };

    

    res.writeHead('200', {'Content-Type':'text/html;charset = utf8'});

    res.write('<h1> express server answer');

    res.write('<div><p>Param Name : ' +paramName + '</p></div>');

    res.write('<div><p>Param id :'+paramId + '</p></div>' );

    res.write('<div><p>param pass :' + parPass + '</p></div>');

    res.write(

    "<br><br><a href ='/public/login2.html'>go back</a>");

    res.end();

    }

});

router.route('/process/logout').get(function(req,res){

    console.log('logout');

    if(req.session.user){

        console.log('go logout');

        req.session.destroy(function(err){

            if(err){throw err;}

            console.log('session des');

            res.redirect('/public/login2.html');

        });

    }else{

        console.log('not yet login');

        res.redirect('/public/login2/html');

    }

});


var bodyParser = require('body-parser'), static = require('serve-static');

// static 미들웨어 불러오기


var app = express();

app.set('port', process.env.PORT||3000);


app.use(bodyParser.urlencoded({extended:false}));

// body-parser 활용

// application//www-xxx-xxx 주소를 파싱

// 즉 폴더안에 있는 페이지의 주소를 연결해줌!!

app.use(bodyParser.json());

// bp를 이용한 application/json 파싱

// 내용을 파밍하는듯?

app.use(static(path.join(__dirname, 'public')));

// 폴더명을 연결해줌!!

// public만 해주나?


app.use('/', router); //router을 app 객체에 등록


http.createServer(app).listen(3000, function(){

    console.log('server start');

});



이 부분은 서버 실행 + 로그인 + 세션 유지 파트이다.

기본적으로 특정 페이지 접속시 세션유무를 파악하여

세션이 있으면 페이즈를 응답하고

없으면 로그인 할 수 있도록 유도한다


근데 문제는 session 에러가 계속 뜸

TypeError: Cannot read property 'user' of undefined

분명 세션 사용과 if else를 통해 세션이 없을경우 저장 까지 할 수 있게 해놨는데

실행이 안된다.


내일 더 봐야할듯..

'Node.Js 도전(임시 마감)' 카테고리의 다른 글

Do.it과 함께하는 Node.js 5장  (0) 2018.04.30

+ Recent posts