본문 바로가기
IT

Day 3

by 깻잎쌈 2020. 1. 24.
반응형

쿠키설정 추가 

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

var bodyParser = require('body-parser'),
    static = require('serve-static'),
    expressErrorHandler = require('express-error-handler'),
    cookieParser = require('cookie-parser');

var app = express();


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

// https://www.npmjs.com/package/body-parser
app.use(bodyParser.urlencoded({extended:false}));
//  application/json 형식으로 전달된 요청 파라미터를 파싱할 수 있음
app.use(bodyParser.json());

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

//req 객체에 cookies 속성 추가 
app.use(cookieParser());

/*app.use(function(req,res,next){
    console.log('첫번재 미들웨어에서 요청을 처리함');
    0
    var paramId = req.body.id || req.query.id;
    var paramPassword = req.body.password || req.query.password;
    
    res.writeHead('200', {'Content-Type':'text/html;charset=utf8'});
	res.write('<h1>Express 서버에서 응답한 결과.</h1>');
	res.write('<div><p>Param id : ' + paramId + '</p></div>');
	res.write('<div><p>Param password : ' + paramPassword + '</p></div>');
	res.end();
}); */

var router = express.Router();

//이건 그냥 보여주는 거 밖에 없음 
router.route('/process/showCookie').get(function(req,res){
    console.log('/process/showcookie 호출됨');
    
    res.send(req.cookies);
});

router.route('/process/setUserCookie').get(function(req,res){
    console.log('/process/setUserCookie 호춛됨 ');
    
    // 쿠키설정 
    res.cookie('user', {
        id: 'mike',
        name: '구준희',
        authorized: true
    });
    
     res.cookie('user2', {
        id: 'mike2',
        name: '구준희?',
        authorized: true
    });
    
   res.redirect('/process/showCookie');
    //res.send(req.cookie);
});

router.route('/process/login2').post(function(req,res){
    console.log('/process/login2 처리함');
    
    var paramId = req.body.id || req.query.id;
    var paramPassword = req.body.password || req.query.password;
    
    res.writeHead('200', {'Content-Type':'text/html;charset=utf8'});
	res.write('<h1>Express 서버에서 응답한 결과.</h1>');
	res.write('<div><p>Param id : ' + paramId + '</p></div>');
	res.write('<div><p>Param password : ' + paramPassword + '</p></div>');
    res.write("<br><br><a href='/login2.html'> 로그인 페이지로 back</a>");
    //app.use(/*'/fake',*/ static(path.join(__dirname, 'public')));
    // /public 생략했기때문에 a href='/public/login2.html 에서도 public 생략 
	res.end();
    
    console.log('id :'+ paramId);
    console.log('pass : '+paramPassword);
})

//라우터 객체를 app 객체에 등록
app.use('/', router);

//등록 안된 페이지에 대한 응답 
//app.all('*', function(req,res){
//    res.status(404).send('<h1> Cant find page </h1>');
//});

var errorHandler = expressErrorHandler({
    static: {
        '404':'./public/404.html'
    }
});

app.use(expressErrorHandler.httpError(404));
app.use(errorHandler);


app.listen(app.get('port'), function(){
    console.log('Server started');
})

 

세션 설정 추가

localhost:3000/process/product 로 시작해서

로그인 안됬기 때문에 login2.html로 이동해서 로그인하고 세션저장하고

로그인 됬기 때문에 상품정보 페이지보여줌.

 

로그아웃하면 세션 객체 삭제되고 다시 login2.html로 이동한다.

 

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

var bodyParser = require('body-parser'),
    static = require('serve-static'),
    expressErrorHandler = require('express-error-handler'),
    cookieParser = require('cookie-parser'),
    expressSession = require('express-session');

var app = express();


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

// https://www.npmjs.com/package/body-parser
app.use(bodyParser.urlencoded({extended:false}));
//  application/json 형식으로 전달된 요청 파라미터를 파싱할 수 있음
app.use(bodyParser.json());

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

//req 객체에 cookies 속성 추가 
app.use(cookieParser());
//req 객체에 session 속성 추가 
app.use(expressSession({
    secret:'my key',
    resave:true,
    saveUninitialized:true
}));

/*app.use(function(req,res,next){
    console.log('첫번재 미들웨어에서 요청을 처리함');
    0
    var paramId = req.body.id || req.query.id;
    var paramPassword = req.body.password || req.query.password;
    
    res.writeHead('200', {'Content-Type':'text/html;charset=utf8'});
	res.write('<h1>Express 서버에서 응답한 결과.</h1>');
	res.write('<div><p>Param id : ' + paramId + '</p></div>');
	res.write('<div><p>Param password : ' + paramPassword + '</p></div>');
	res.end();
}); */

var router = express.Router();

router.route('/process/product').get(function(req,res){
    console.log('/process/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.cookies);
});

router.route('/process/setUserCookie').get(function(req,res){
    console.log('/process/setUserCookie 호춛됨 ');
    
    // 쿠키설정 
    res.cookie('user', {
        id: 'mike',
        name: '구준희',
        authorized: true
    });
    
     res.cookie('user2', {
        id: 'mike2',
        name: '구준희?',
        authorized: true
    });
    
   res.redirect('/process/showCookie');
}); 

router.route('/process/login2').post(function(req,res){
    console.log('/process/login2 처리함');
    
    var paramId = req.body.id || req.query.id;
    var paramPassword = req.body.password || req.query.password;
    
    if(req.session.user){
        console.log('이미 로그인됬의니 상품 페이지로 이동합니다');
        
        res.redirect('/public/product.html');
    }else{
        //세션 저장
        req.session.user ={
            id:paramId,
            name:'구준희',
            authorized: true
        };
        
       res.writeHead('200', {'Content-Type':'text/html;charset=utf8'});
	   res.write('<h1>Express 로그인 성공 </h1>');
	   res.write('<div><p>Param id : ' + paramId + '</p></div>');
	   res.write('<div><p>Param password : ' + paramPassword + '</p></div>');
       res.write("<br><br><a href='/process/product'> 로그인됬으니 상품 페이지로 이동 </a>");
        //app.use(/*'/fake',*/ static(path.join(__dirname, 'public')));
        // /public 생략했기때문에 a href='/public/login2.html 에서도 public 생략 
	   res.end();
    
        console.log('id :'+ paramId);
        console.log('pass : '+paramPassword);
        console.log('session : '+ req.session.user.name);
        }
     
});

router.route('/process/logout').get(function(req,res){
    console.log('/process/logout 호출됨');
    
    if(req.session.user){
        //로그인 된 상태
        console.log('로그아웃합니다');
        
        req.session.destroy(function(err){
            if(err){throw err;}
            
            console.log('세션 삭제 및 로그아웃되었음');
            res.redirect('/public/login2.html');
        });
    }else{
        //로그인 안된 상태
        console.log('로그인해주세요 ');
        res.redirect('/public/login2.html');
    }
});

//라우터 객체를 app 객체에 등록
app.use('/', router);

//등록 안된 페이지에 대한 응답 
//app.all('*', function(req,res){
//    res.status(404).send('<h1> Cant find page </h1>');
//});

var errorHandler = expressErrorHandler({
    static: {
        '404':'./public/404.html'
    }
});

app.use(expressErrorHandler.httpError(404));
app.use(errorHandler);


app.listen(app.get('port'), function(){
    console.log('Server started');
})

 

반응형

'IT' 카테고리의 다른 글

Day6  (0) 2020.01.29
Day5  (0) 2020.01.28
Day4  (0) 2020.01.25
Day 2  (0) 2020.01.23
Day1  (0) 2020.01.20

댓글