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 |
---|