c o d i n g . . ๐Ÿ‰/Node.js

[์ƒํ™œ์ฝ”๋”ฉ] NodeJs ํ™œ์šฉํ•˜๊ธฐ(2)

H J 2021. 8. 9. 16:59

Session

: cookie๋ฅผ ์กฐ๊ธˆ ๋” ๊ฐœ์„ ํ•œ ๋ฐฉ๋ฒ•

์ฟ ํ‚ค์™€ ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ž˜ ์กฐํ•ฉํ•ด ์„ธ์…˜์„ ๋งŒ๋“ ๋‹ค

 

cookie๋Š” id๋‚˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋‹ค๋ฃจ๊ธฐ์—๋Š” ์œ„ํ—˜ํ•˜๋‹ค → ๋ณด์•ˆ ๋ฌธ์ œ

 

์„ธ์…˜์€ ์„œ๋ฒ„๊ฐ€ ์ฟ ํ‚ค ๋ฐฉ์‹์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์ด๋•Œ ์ฟ ํ‚ค์™€ ๋‹ค๋ฅด๊ฒŒ ์‚ฌ์šฉ์ž์˜ ์‹๋ณ„์ž id ๊ฐ’๋งŒ์„ ์ €์žฅํ•œ๋‹ค 

→ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋Š” ์„œ๋ฒ„์˜ database์— ์ €์žฅ๋˜์–ด ์žˆ๋‹ค

 

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ๊ฐ€ id๋ฅผ ๊ฐ–๊ณ  ์„œ๋ฒ„์— ์ ‘์†ํ•  ๋•Œ ์„œ๋ฒ„๊ฐ€ ํ•ด๋‹น id ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” data๋ฅผ ์ฝ์–ด์™€ ์‚ฌ์šฉํ•œ๋‹ค

 

 

↓↓ ์‹ค์ œ๋กœ ์„ธ์…˜์˜ set-cookie์—๋Š” connect.sid์˜ ๊ฐ’๋งŒ ์žˆ๊ณ  ์ฟ ํ‚ค์˜ set-cookie์—๋Š” count์˜ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค

(์™ผ) session / (์˜ค) cookie

๋‹ค์‹œ ๋งํ•˜๋ฉด session์€ ํด๋ผ์ด์–ธํŠธ์— ์‚ฌ์šฉ์ž์˜ id ๊ฐ’๋งŒ ์ €์žฅํ•˜๊ณ , cookie๋Š” ํด๋ผ์ด์–ธํŠธ์—  ์‹ค์ œ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค

 


์ด์ œ session ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด๋ณผ ์ฐจ๋ก€!

 

๋จผ์ € express-session์„ ์„ค์น˜ํ•ด์ค€๋‹ค

 

 

๊ทธ๋ฆฌ๊ณ  ์„ธ์…˜์„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค!

let session = require('express-session');

app.use(session({  // session

    secret: 'rri4iutrp9wroiorej;', // ๋žœ๋คํ•œ ๊ฐ’

    resave: false,

    saveUninitialized: true

}))

express ์‚ฌ์šฉ์„ ์ œ์™ธํ•œ ๋ถ€๋ถ„!

 

 

๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ์œผ๋กœ ๊ฐ„๋‹จ์„ ์˜ˆ์ œ๋ฅผ ๋šฑ๋•…!

let express = require('express');
let session = require('express-session');  // session

let app = express();

app.use(session({  // session
    secret: 'rri4iutrp9wroiorej;', // ๋žœ๋คํ•œ ๊ฐ’
    resave: false,
    saveUninitialized: true
}))

app.get('/count', function(req, res){
    if(req.session.count){  // count ๊ฐ’์ด ์žˆ๋‹ค๋ฉด
        req.session.count++;  // 1 ์ฆ๊ฐ€
    }
    else{  // count ๊ฐ’์ด ์—†๋‹ค๋ฉด
        req.session.count = 1;  // 1๋กœ ์„ค์ •
    }
    res.send('count : '+ req.session.count);
})

app.get('/tmp', function(req, res){  // ๋‹ค๋ฅธ url๋กœ ๋“ค์–ด๊ฐ€๋„ ํด๋ผ์ด์–ธํŠธ์˜ id๊ฐ€ ๊ฐ™์œผ๋ฉด ๊ฐ™์€ count ์ถœ๋ ฅ
    res.send('result : '+req.session.count);
})

app.listen(3003, function(){
    console.log('Connected 3003 port!!!');
})

์ด ์‚ฌ์ง„์— ๋ณด์ด๋Š” connect.sid๊ฐ€ req.session.count์™€ ์—ฐ๊ฒฐ๋˜์—ˆ๋‹ค!

 

์ด๋•Œ express-session์€ ๋ฉ”๋ชจ๋ฆฌ์— data๋ฅผ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๋ฅผ ๋‹ค์‹œ ๊ป๋‹ค ์ผœ๋ฉด data๊ฐ€ ๋ชจ๋‘ ์‚ฌ๋ผ์ง„๋‹ค!

 

 

 

๋Œ€์ถฉ ๋กœ๊ทธ์ธ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ์งœ๋ณด๋ฉฐ session์— ๋Œ€ํ•ด ๋” ์ดํ•ดํ•ด๋ณด๊ธฐ!

 

๋จผ์ € get ๋ฐฉ์‹์œผ๋กœ ๋กœ๊ทธ์ธ

app.get('/auth/login', function(req, res){
    let output=`
    <h1>Login</h1>
        <form action="/auth/login" method="post">
            <p>
                <input type="text" name="username" placeholder="username">
            </p>
            <p>
                <input type="password" name="password" placeholder="password">
            </p>
            <p>
                <input type="submit">
            </p>
        </form>
    `;

    res.send(output);
})

์ด๋•Œ ํผ ํƒœ๊ทธ์˜ action์„ ์ด์šฉํ•ด์„œ ์ด๋™ํ•  ํŽ˜์ด์ง€์™€ ๋ฐฉ์‹์„ ์ง€์ •ํ•ด์ค€๋‹ค

์šฐ๋ฆฌ๋Š” ๋กœ๊ทธ์ธ์„ ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— post ๋ฐฉ์‹์œผ๋กœ ์ง€์ •ํ•ด์ค€ ๊ฒƒ์ด๋‹ค

 

 

 

 

๊ทธ๋ฆฌ๊ณ  post ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” body๋ฅผ ์ด์šฉํ•ด์„œ data๋ฅผ ๋ฐ›์•„์™€์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— bodyParser๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์ค€๋‹ค

let bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended: false}))

๋”ฐ๋ž€~~ ๐Ÿงผ๐Ÿ›๐Ÿ›ธ๐Ÿฉฒ๐Ÿงƒ๐Ÿ

 

 

post ๋ฐฉ์‹ ๋ผ์šฐํŠธ!

app.post('/auth/login', function(req, res){
    let user = { // ์ผ๋‹จ DB ๋Œ€์‹  ์‚ฌ์šฉ
        username: 'pompompurin',
        password: '111',
        displayName: 'PomPomPuRin'
    };
    let uname = req.body.username;
    let pwd = req.body.password;

    if(uname === user.username && pwd === user.password){
        req.session.displayName = user.displayName;
        req.session.save(function() {
            res.redirect('/welcome');
        })
    }
    else{
        res.send('There is no data <a href="/auth/login">login</a>');
    }
})

์ผ๋‹จ DB ๋Œ€์‹  ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด user์˜ ์ •๋ณด๋ฅผ ๋‹ด์•„์ค€๋‹ค

์—ฌ๊ธฐ์„œ displayName์€ ์ž…๋ ฅ๋ฐ›๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์„œ๋ฒ„์— ๋‹ด๊ฒจ์žˆ๋Š” ์ •๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์—!

 

 

์ •๋ณด๊ฐ€ ๋งž๋‹ค๋ฉด user.displayName์„ ์ „๋‹ฌํ•ด์ฃผ๊ณ  /welcome ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ด์ค€๋‹ค

์•„๋‹Œ ๊ฒฝ์šฐ ํ‹€๋ ธ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ฃผ๋ฉฐ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ํƒœ๊ทธ๋ฅผ ๊ฑธ์–ด์ค€๋‹ค 

๋”๋ณด๊ธฐ
์ •๋ณด๊ฐ€ ํ‹€๋ฆฐ ๊ฒฝ์šฐ!

๋งž์€ ๊ฒฝ์šฐ /welcome ํŽ˜์ด์ง€๋กœ redirect ๋˜๋Š”๋ฐ ์•„์ง ๋ผ์šฐํŠธ ํ•ด์ฃผ์ง€ ์•Š์•„์„œ ๊ทธ๊ฑด ์ด ๋’ค์—!

 

 

๋‹ค์Œ์€ welcome ํŽ˜์ด์ง€

app.get('/welcome', function(req, res){
    if(req.session.displayName){ // ๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ•œ ๊ฒฝ์šฐ
        res.send(`
            <h1>Hello, ${req.session.displayName}</h1>
            <a href="/auth/logout">logout</a>
        `);
    }
    else{ // ๋กœ๊ทธ์ธ์— ์‹คํŒจํ•œ ๊ฒฝ์šฐ
        res.send(`
            <h1>Welcome</h1>
            <a href="/auth/login">Login</a>
        `);
    }
    
})

๋งŒ์•ฝ URL์„ ์ž…๋ ฅํ•ด์„œ ์ ‘๊ทผํ–ˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ req.session์˜ ๊ฐ’์˜ ์œ ๋ฌด๋กœ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ํ™•์ธํ•œ๋‹ค

post ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•œ /auth/login์—์„œ displayName์„ ์ œ๋Œ€๋กœ ๋ฐ›์•„์˜ค๋ฉด ๋กœ๊ทธ์ธ๋œ ์ƒํƒœ, ๋ฐ›์•„์˜ค์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด ๋กœ๊ทธ์ธ๋˜์ง€ ์•Š์€ ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ!

 

๋กœ๊ทธ์ธ์ด ๋œ ์ƒํƒœ๋ฉด displayName์„ ๋ณด์—ฌ์ฃผ๊ณ  logout ์ด๋™ ํƒœ๊ทธ๋„ ๊ฑธ์–ด์ค€๋‹ค  ๋กœ๊ทธ์•„์›ƒ ํŽ˜์ด์ง€๋Š” ๋’ค์— ์ด์–ด์„œ..

ํ•˜์ง€๋งŒ ๋กœ๊ทธ์ธ์ด ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๋ผ๋ฉด ๋กœ๊ทธ์ธ ์ด๋™ ํƒœ๊ทธ๋ฅผ ๊ฑธ์–ด์ค€๋‹ค

 

๋”๋ณด๊ธฐ
๋กœ๊ทธ์ธ์ด ์ œ๋Œ€๋กœ ๋œ ๊ฒฝ์šฐ
๋กœ๊ทธ์ธ์ด ์ œ๋Œ€๋กœ ๋˜์ง€ ์•Š๊ณ  URL๋กœ ์ ‘๊ทผํ•œ ๊ฒฝ์šฐ

 

๋‹ค์Œ์œผ๋กœ๋Š” ๋กœ๊ทธ์•„์›ƒ!

app.get('/auth/logout', function(req, res){
    delete req.session.displayName;
    req.session.save(function() {
    	res.redirect('/welcome');
	})
})

์ด๋ ‡๊ฒŒ delete๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์„ธ์…˜์„ ์ง€์›Œ์ฃผ๋ฉด ๋œ๋‹ค! ๋กœ๊ทธ์•„์›ƒ์„ ๋ˆ„๋ฅด๋ฉด ๋‹ค์‹œ ๋กœ๊ทธ์ธ์ด ์•ˆ๋œ ์›ฐ์ปด ํŽ˜์ด์ง€๋กœ

 

 


File์— ์„ธ์…˜์„ ์ €์žฅํ•˜๋Š” ๋ฒ•!

 

session-file-store ์‚ฌ์šฉ

๋จผ์ € ์„ค์น˜๋ฅผ ํ•ด์ค€๋‹ค

 

let session = require('express-session');  // session
let FileStore = require('session-file-store')(session); // express-session์— ์˜์กด

app.use(session({  // session
    secret: 'rri4iutrp9wroiorej;', // ๋žœ๋คํ•œ ๊ฐ’
    resave: false,
    saveUninitialized: true,
    store: new FileStore() // ์ถ”๊ฐ€
}))

session-file-store๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ์ฝ”๋“œ!

 

์‹คํ–‰์‹œ์ผœ๋ณด๋ฉด sessions๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋œ ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค

 

์ž๋™์œผ๋กœ sessions ๋””๋ ‰ํ† ๋ฆฌ ์•„๋ž˜์— ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜๊ณ  ๋กœ๊ทธ์ธ ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ์ด๋ ‡๊ฒŒ ๋ณด์ธ๋‹ค
๋งˆ์ง€๋ง‰์— displayName์ด ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋œ ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค

 

↓↓ ๋กœ๊ทธ์ธ, ๋กœ๊ทธ์•„์›ƒ์ด ๊ฐ‘์ž๊ธฐ ์•ˆ๋ผ์„œ ๋จธ๋ฆฌ ๊ฝ๊ฝ ์‹ธ๋งจ ๋‚˜... ํ˜น์‹œ ์ด๊ฑฐ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ์˜ค์‹  ๋ถ„์ด ๊ณ„์‹œ๋‹ค๋ฉด ์ ‘ํžŒ ๊ธ€์˜ ์•„๋žซ๋ถ€๋ถ„์„ ์ฝ์–ด๋ณด์„ธ์š” ;ใ……; 

๋”๋ณด๊ธฐ

์•„.. ๊ฐ‘! ์ž๊ธฐ... ๐Ÿจ

์™œ ์˜ค๋ฅ˜๋– ,,,

๊ทธ๋ž˜์„œ ํ„ฐ๋ฏธ๋„ ์ผฐ๋Š”๋ฐ npm startํ•ด๋„ ์•ˆ๋ผ์„œ ๋ฐฉ๋ฒ•์„ ์•Œ์•„์™”๋‹ค!

 

์จ”์ž”

package.json์˜ script ๋ถ€๋ถ„์—

"scripts": {

    "start": "supervisor ./app_session_file.js"

  },

์š”๋ ‡๊ฒŒ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค!!

๊ทผ๋ฐ ๊ณ„์† ๋ฐ”๊ฟ”์ค˜์•ผ ํ•˜๋„ค.. ใ…Ž.ใ…Ž

 

์ด์ œ๋ถ€ํ„ฐ ํ„ฐ๋ฏธ๋„ ์‚ฌ์šฉํ•ด์•ผ์ง€


์•„๋‹ˆ ๊ทธ๊ฒƒ๋ณด๋‹ค ๊ณ„์† ์˜ค๋ฅ˜ ๋‚˜๋ฉด์„œ crashing child๋ผ๊ณ  ํ•˜๋”๋‹ˆ ๊ฐ‘์ž๊ธฐ ๋๋‹ค..

์ด๊ฒŒ ๋ญ” ๊ฒฝ์šฐ์ง€???ใ…œใ…œ

ํ˜น์‹œ๋‚˜ ํ•˜๊ณ  ์ฟ ํ‚ค ์ง€์šฐ๊ณ  ๋‹ค์‹œ ํ–ˆ๋”๋‹ˆ ๋˜ ์˜ค๋ฅ˜ ์˜ค์— ์ฅ,,,

 

→ ์•Œ๊ณ  ๋ณด๋‹ˆ๊นŒ ์„ธ์…˜์— data๊ฐ€ ์ €์žฅ๋˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋˜๊ธฐ ์ „์— redirect๊ฐ€ ์‹คํ–‰๋˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋–ด๋˜ ๊ฒƒ์ž„ ใ… 

 

์™€ ํ•ด๊ฒฐํ–ˆ๋‹ค

 

req.session.displayName์— user.session.displayName์„ ์ฃผ๊ธฐ ์ „์ด๋‚˜, delete๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „์— redirect๊ฐ€ ๋  ์ˆ˜๋„ ์ผ์–ด๋‚˜์„œ ์ œ๋Œ€๋กœ ์‹คํ–‰์ด ์•ˆ๋œ ๊ฒƒ์ด์—ˆ๋‹ค... ์™€

 

๊ฒฐ๊ตญ!

req.session.save(function() {
	res.redirect('/welcome');
})

์ด๋ ‡๊ฒŒ ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ์•ˆ์— redirect๋ฅผ ๋„ฃ์œผ๋ฉด ์ž˜ ์‹คํ–‰๋œ๋‹ค ;ใ……;

์ด๊ฑฐ ๋•Œ๋ฉ” ํ˜ผ์ž ๊ณ„์† ๋จธ๋ฆฌ ๊ฝ๊ฝ ์‹ธ๋งธ๋Š”๋ฐใ… ใ… 

 

์œ„์— ์ฝ”๋“œ ๋‹ค ๊ณ ์ณ์•ผ๊ฒ ๋‹ค


์•„๋‹ˆ ์ž ๊น๋งŒ..ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹

๋‚˜ ํ˜ผ์ž ๋™๋™๊ฑฐ๋ฆฌ๋ฉด์„œ ํ•ด๊ฒฐํ–ˆ๋Š”๋ฐ ๊ฐ‘์ž๊ธฐ MySQL ์ €์žฅ ๋ถ€๋ถ„์—์„œ ์•Œ๋ ค์ฃผ์‹œ๋„ค???

 

redirect์„ ํ•˜๊ธฐ ์ „์—๋Š” ํ•ญ!์ƒ! save๋ผ๋Š” ํ•จ์ˆ˜์— ์ฝœ๋ฐฑ์„ ์ฃผ์–ด์„œ redirect๋ฅผ ํ•ด์ค˜์•ผ ํ•œ๋‹ค

save๋Š” data-store์— ์ €์žฅ์ด ๋๋‚ฌ์„ ๋•Œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋‚˜์ค‘์— ํ˜ธ์ถœํ•ด์ค€๋‹ค...


๋ˆˆ๋ฌผ ์ค„์ค„ ํ˜๋ฆฌ๋ฉด์„œ... ๋‹ค์Œ ๊ฐ•์˜๋กœ...

 

๋“œ๋””์–ด!! ๋Œ€๋ง์˜!!!

MySQL์— ์„ธ์…˜์„ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•!! ๐ŸŒญ๐Ÿณ๐Ÿฅž

 

๋จผ์ € express-mysql-session์„ ์„ค์น˜ํ•ด์ค๋‹ˆ๋‹ค

 

๊ทธ๋ฆฌ๊ณ  express-mysql-session์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ์ฝ”๋“œ๋ฅผ ์จ์ค€๋‹ค

let session = require('express-session');  // session
let MySQLStore = require('express-mysql-session')(session); // express-session์— ์˜์กด

app.use(session({  // session
    secret: 'rri4iutrp9wroiorej;', // ๋žœ๋คํ•œ ๊ฐ’
    resave: false,
    saveUninitialized: true,
    store: new MySQLStore({ // ์˜ต์…˜ ํ•„์ˆ˜
        host: 'localhost',
        port: 3306,
        user: 'root',
        password: '๋น„๋ฒˆ',
        database: 'o2'
    })
}))

์ด๋•Œ mysql์— ์ ‘๊ทผํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ €๋Ÿฐ ์˜ต์…˜์— ์ •๋ณด๋ฅผ ๊ผญ ์ ์–ด์ค˜์•ผ ํ•œ๋‹ค!

 

๊ทธ๋ฆฌ๊ณ  app_session_mysql.js๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด ์ž๋™์œผ๋กœ sessions๋ผ๋Š” table์ด ์ƒ๊ธด ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค

 

ํ˜„์žฌ๋Š” ์•„๋ฌด data๋„ ์—†๋Š” ์ƒํƒœ!

 

table์— ์•„๋ฌด data๋„ ์—†์—ˆ์ง€๋งŒ ๋ฆฌ๋กœ๋“œ๋ฅผ ํ•ด์ฃผ๋ฉด ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉ์ž์˜ id๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค

 

๋กœ๊ทธ์ธ๊นŒ์ง€ ํ•ด์ฃผ๋ฉด displayName๋„ ์ถ”๊ฐ€๋œ๋‹ค

 


์Œ ์—ฌ๊ธฐ์„œ ์งš๊ณ  ๋„˜์–ด๊ฐˆ ๋ถ€๋ถ„

 

redirect์„ ํ•˜๊ธฐ ์ „์—๋Š” ํ•ญ!์ƒ! save๋ผ๋Š” ํ•จ์ˆ˜์— ์ฝœ๋ฐฑ์„ ์ฃผ์–ด์„œ redirect๋ฅผ ํ•ด์ค˜์•ผ ํ•œ๋‹ค

save๋Š” data-store์— ์ €์žฅ์ด ๋๋‚ฌ์„ ๋•Œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋‚˜์ค‘์— ํ˜ธ์ถœํ•ด์ค€๋‹ค...

 

req.session.save(function() {
	res.redirect('/welcome');
})

๋!!!

 

์—ฌ๊ธฐ๊นŒ์ง€ 4์‹œ๊ฐ„ ๊ฑธ๋ ธ๋‹ค... ใ…Ž.ใ…Ž

์‰ฝ์ง€ ์•Š๋„ค...

์˜ค๋Š˜ ๊ฐ•์˜ ์žฌ๋ฐŒ์—ˆ๋Š”๋ฐ ์ค‘๊ฐ„์— ๊ฐ‘์ž๊ธฐ redirect๋•Œ๋ฉ” ์‹œ๊ฐ„ ์Ÿ์•„๋ถ€์—ˆ๋”๋‹ˆ ์ง€์ณค๋‹ค...

 

์–ผ๋ฅธ ์ •๋ฆฌํ•˜๊ณ  ํ† ์ต ๊ณต๋ถ€ํ•ด์•ผ์ง€ ;ใ……;