반응형
쿠키설정 추가
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');
})
반응형
댓글