서버(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인 값이 브라우저에 저장된 것을 볼 수 있다








반응형