NodeJs - 6. Cookie

less than 1 minute read

사용자가 로그인 상태인지 아닌지 확인하고 싶을 때 쿠키나 세션 사용.

쿠키는 클라이언트 웹 브라우저의 정보,

세션은 웹 서버에 저장되는 정보.

쿠키 처리하기

var cookieParser = require('cookie-parser');
....
app.use(cookieParser());
....
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: 'boy', name: '찰리', authorized: true }); res.redirect('/process/showCookie');
});
app.use('/', router);

설치

npm install cookie-parser --save

세션처리하기

로그인하면 세션 생성, 로그아웃하면 세션 삭제 -> 로그인하기 전까지 접근을 제한할 수 있음.

설치

npm install express-session --save


>> code
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
....
app.use(cookieParser());
app.use(expressSession({ secret: 'my key', resave: true, saveUninitialized: true
}));
var router = express.Router();
// session check
router.route('/process/product').get(function(req, res) { console.log('/process/product 호출됨'); if (req.session.user) { res.redirect('/html/product.html'); } else { res.redirect('/html/login2.html'); }
});
app.use('/', router);

login

router.route('/process/login').pose( function(req, res)
{
	console.log('/process/login 호출'); 
	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: 'boy', authorized: true }; 
	
	 res.writeHead('200', { 'Content-Type': 'text/html;charset=utf8' }); 
	
	 res.write('<h1>로그인 성공</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>"); 
	 res.end(); 
	}
});

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'); }
});

Leave a comment