서버(Server)/Server&Nodejs&DB
Nodejs : Express 쿠키 & 라우터
3DMP
2018. 5. 2. 14:53
설치해야할 모듈
npm install cookie-parser --save
쿠키 : 브라우저에 저장정보
세션 : 서버에 저장정보
필요한 모듈
var cookieParser = require('cookie-parser');
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | var express = require('express'); var http = require('http'); var serveStatic = require('serve-static'); //특정 폴더의 파일들을 특정 패스로 접근할 수 있도록 열어주는 역할 var path = require('path'); var cookieParser = require('cookie-parser'); var app = express(); //express 서버 객체 var bodyParser_post = require('body-parser'); //post 방식 파서 app.set('port', 3000); //미들웨어들 등록 시작, 아래 미들웨어들은 내부적으로 next() 가실행됨 //join은 __dirname : 현재 .js 파일의 path 와 public 을 합친다 //이렇게 경로를 세팅하면 public 폴더 안에 있는것을 곧바로 쓸 수 있게된다 app.use(serveStatic(path.join(__dirname, 'public'))); //post 방식 일경우 begin //post 의 방식은 url 에 추가하는 방식이 아니고 body 라는 곳에 추가하여 전송하는 방식 app.use(bodyParser_post.urlencoded({ extended: false })); // post 방식 세팅 app.use(bodyParser_post.json()); // json 사용 하는 경우의 세팅 //post 방식 일경우 end app.use(cookieParser()); //라우터를 사용 (특정 경로로 들어오는 요청에 대하여 함수를 수행 시킬 수가 있는 기능을 express 가 제공해 주는것) var router = express.Router(); //라우터를 통해 쿠키 정보를 저장할 수 있음 router.route('/process/setUserCookie').get( function (req, res) { console.log('/process/setUserCookie : 라우팅 함수 호출 '); //웹서버에서 웹 브라우저에 저장할 정보를 세팅한다 res.cookie( 'user', { id: '1004', name: 'kim', authorized: true } ); res.redirect('/process/showCookie'); //페이지 리다이렉트 } ); // 웹브라우저에서 서버쪽에 어떤 요청을 할대 갖고 있는 쿠키정보를 넘겨준다, 이 정보는 req,cookies 에서 확인할 수 있다 router.route('/process/showCookie').get( function (req, res) { console.log('/process/showCookie : 라우팅 함수 호출 '); //req.cookies 이것은 서버에 있는 것이 아닌 클라에서 요청했을때 넘어온 req 객체에 있는 웹브라우저 쿠키 정보이다 //즉 클라이언트에서 서버 접속시 브라우저에서 보내준 정보인데 이것을 사전에 값을 세팅하여 다시 클라로 보내 //해당 내용을 저장하라고 send 할 수 있다 res.send(req.cookies); } ); router.route('/process/login/:name').post( //설정된 쿠키정보를 본다 function (req, res) { console.log('/process/login:name 라우팅 함수에서 받음'); var paramName = req.params.name; var paramID = req.body.id || req.query.id; var pw = req.body.passwords || req.query.passwords; res.writeHead(200, { "Content-Type": "text/html;characterset=utf8" }); res.write(paramName + ' , ' + paramID + " : " + paramID); res.end(); } ); //라우터 미들웨어 등록하는 구간에서는 라우터를 모두 등록한 이후에 다른 것을 세팅한다 //그렇지 않으면 순서상 라우터 이외에 다른것이 먼저 실행될 수 있다 app.use('/', router); //라우트 미들웨어를 등록한다 app.all('*', function (req, res) { res.status(404).send('<h1> 요청 페이지 없음 </h1>'); } ); //웹서버를 app 기반으로 생성 var appServer = http.createServer(app); appServer.listen(app.get('port'), function () { console.log('express 웹서버 실행' + app.get('port')); } ); |
브라우저에 localhost:3000/process/setUserCookie 를 입력하여 클라로부터 받은 쿠키 정보에 저장할 값을 서버에서 세팅한다음
다시 클라로 전송 하여 브라우저에서 정보를 갖고있게 한다
결과화면
쿠키 정보에서 showCookie , 쿠키 값을 보면 이름이 user인 값이 브라우저에 저장된 것을 볼 수 있다
반응형