๐ฃ ์ํฉ
์ธ์ ์ ๋ํ ๊ฐ๋ ์ด ํท๊ฐ๋ ค์ ๋ค์ ํ ์คํธ ํ๋ ๋์ค ์ค๋ฅ๋ฅผ ๋ง๋ฌ๋ค.
req.session.name = '๋น๋ฆฌ'
๋ก ํด์ ์ ์ฅ๊น์ง๋ ์ฑ๊ณต ํ๋๋ฐ,
๋ค๋ฅธ ๊ฒฝ๋ก์์ console.log(req.session )์ ํธ์ถํด ๋ณด๋ ์์ name์ด ์์๋ค.
๐ซ ๋ฌธ์ __ ์ธ์ ์ ์ ์ฅํ ๊ฐ์ ์ ๋ชป๋ถ๋ฌ ์ค๋๊ฐ?
// '/nana' ๊ฒฝ๋ก๋ก ์ ์ฅ ํ, '/gaga'๊ฒฝ๋ก๋ก ์์ฒญ์ req.session์ ์ถ๋ ฅํด ๋ดค๋ค.
์ธ์
Session {
cookie: {
path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true,
secure: true
}
}
//์ ์ฅํ๋ ํค๋ฐธ๋ฅ๊ฐ ๋ณด์ด์ง ์๋๋ค.
์ด์ ๋ฅผ ์์ง ๋ชปํด ํ์ฐธ์ ๋ค์ ์๋๋ฐ, ๊ทธ ๊ฒฝํ์ ๊ณต์ ํด ๋ณด๋ ค ํ๋ค.
๐ ํด๊ฒฐ ๊ณผ์
๐ ์ ๊ทผ 1. ๋ช ๋ น์ด๋ฅผ ์ ๋๋ก ์ฌ์ฉํ์๋๊ฐ?
๋ด๊ฐ ์๊ณ ์๋ req.session์ ๊ฐ์ ์ง์ด๋ฃ๋ ๋ฐฉ์์ ์๋์ ๊ฐ์๋ค.
req.session.ํค์ด๋ฆ = ๋ฃ์๊ฐ
์ ์ฅํ๋ ค๊ณ ํ ์ธ์ ์ ์ ์ฅ ํ ์ฝ์์๋ ์ถ๋ ฅ๋๊ณ , ์ ์ฅ์์๋ ์ ์ฅ ๋๊ฒ์ ํ์ธํ์๋ค.
๊ทธ๋ผ ์ ์ฅ๋ฌธ์ ๊ฐ ์๋๋ผ ๋ถ๋ฌ์ค๋ ๋ถ๋ถ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ์ง๋ง,
๋จ์ํ req.session ์ ์ถ๋ ฅํด๋ ๋ฐฉ๊ธ ์ ์ฅํ ํค ๋ฒจ๋ฅ๊ฐ ๋์ค์ง ์์๋ค.
express-session ๊ณต์๋ฌธ์๋ฅผ ์ฐพ์๋ด๋ ๋ช ๋ น์ด๊ฐ ๋ค๋ฅธ๋ถ๋ถ์ ์ฐพ์ง ๋ชปํ๋ค.
๊ทธ๋ผ ๋ช ๋ น์ด ๋ฌธ์ ๋ ์๋๊ฑฐ ๊ฐ์ ๋ค๋ฅธ ๋ฌธ์ ๋ฅผ ์ฐพ์๋ดค๋ค.
๐ฉต 2. ์ค์ ์ ์์๊ฐ ์ ๋๋ก ๋์ด์๋๊ฐ?
express-session์ ์ฌ์ฉํ ๋ app.js ํ์ผ์์ ์์๋ ๋งค์ฐ๋งค์ฐ ์ค์ํ๋ค.
๋์ ๊ฒฝ์ฐ ์ธ์ ๋ ์ต์๋จ์ importํด์ค๋ ์ ๋ค,
์ค๊ฐ๋จ๊ณ์๋ app.use(cookie-paser) ๊ฐ์ ์ ๋ค์ ๋ถ๋ฌ์ค๊ณ
๊ทธ ์๋ app.use('/', router)๊ณผ ๊ฐ์ด ๋ผ์ฐํฐ ์ฐ๊ฒฐํ
๊ฐ์ฅ ํ๋จ์ ํฌํธ ํ์ธ์ฉ app.listen์ ๊ฑธ์ด์ค๋ค.
๊ทผ๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ผ๋ ๋ค์ ์ ๊ฒ์ ํด๋ดค๋ค.
stack over flow์ ๋ฐ๋ฅด๋ฉด, app.use(session()) ํ์ app.get('/api', fuction(){}) ๋ฑ์ ๊ฒฝ๋ก๊ฐ ์ง์ ๋์ด์ผ ํ๋ค๊ณ ํ๋ค.
๋๋ ๊ทธ๋ ๊ฒ ๋์ด์ ธ ์๋ ์ํฉ์ด๋ผ ์ด๊ฒ๋ ๋ฌธ์ ์ ์์ธ์ ์๋๋ฏ ํ๋ค.
https://stackoverflow.com/questions/72099030/req-session-is-undefined-when-using-express-session
๐ 3.๊ธฐ์กด ํ์ผ๋ค ๋๋ฌธ์ ์ด๋ค ์ํธ์์ฉ์ผ๋ก ์ธํด์ ์๋ํ์ง ์๋๊ฐ?
๊ธฐ์กด์ ์์ ํ๋ ๋ด์ฉ๋ค์ด ์ํฅ์ด ์์์๋ ์๊ฒ ๋ค ์ถ์๋ค.
์๋ฌ์ฒ๋ฆฌ ๋ฏธ๋ค์จ์ด๊ฐ ๋์ํ๊ณ ์์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋์ ๊ทธ๋ฅ ์๋ก์ด ํ์ผ์ ๋ง๋ค๊ณ , ํ์ํ ๋ถ๋ถ๋ง ๊ฐ์ ธ์์ ๋ค์ ํ ์คํธ๋ฅผ ํด๋ดค๋ค.
๊ทธ๋ฌ๋ ์ฌ์ ํ ์๋ํ์ง ์์๋ค.
๋๋ฐ์ฒด ๋ญ๊ฐ ๋ฌธ์ ์ผ๊น ์ถ์๊ณ , ์ธ์ ์ผ๋ก ์ด๋ ๊ฒ๋ ํด๋งฌ์ค ๋ชฐ๋๋ค.
โค๏ธ 4. ๋ถ๋ช ์ค์ ์์ ๋ญ๊ฐ ์๋ชป๋์๋ค. !!!
์๋ฌด๋ฆฌ ์ฐพ์๋ด๋ ์ค์ ์ด ๋ฌธ์ ์ธ๊ฒ ๊ฐ์ app.use(session()) ๋ถ๋ถ์ ์์ ํด ๋ดค๋ค.
๊ธฐ์กด์ฝ๋์ด๋ค.
app.use(
session({
secret: "dfjsd",
resave: false,
saveUninitialized: false,
store: new FileStore(),
cookie: {
httpOnly: true,
secure: true,
},
})
);
์ฌ๊ธฐ์ ์๋๋ถํฐ ์ฐจ๊ทผ์ฐจ๊ทผ ํ ์คํธ ํด๋ณด๋ ค๊ณ ์ถ์์ ํด๋ดค๋ค.
app.use(
session({
secret: "dfjsd",
resave: false,
saveUninitialized: false,
store: new FileStore(), //db์ ์ ์ฅํ๋๊ฒ ๋๋์.
})
);
๊ทผ๋ฐ ์ถ๋ ฅ ๊ฒฐ๊ณผ๊ฐ ๋ฐ๋์๋ค.
์ธ์
Session {
'1': 'hoho',
cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true },
__lastAccess: 1701833296665
}
์ ๊ธฐ์ด ์ด๋ค๋ถ๋ถ ๋๋ฌธ์ ์๋ํ์ง ์๋๊ฑด์ง ์ ์ ์์๋ค.
ํ๋์ฉ ํ ์คํธ๋ฅผ ์์ํ๋ค.
1. httpOnly: true๋ง ๋จ๊ธด๋ค.
cookie: {
httpOnly: true,
},
//console ์ถ๋ ฅ ๊ฒฐ๊ณผ
์ ์ฅ Session {
cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true },
ooo: '์ค์ค์ค'
}
[session-file-store] will retry, error on last attempt: Error: ENOENT: no such file or directory, open 'sessions/hcpnvboE1X2FIItiL8B84DF7GygIjZl-.json'
์ถ๋ ฅ Session {
cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true },
ooo: '์ค์ค์ค',
__lastAccess: 1701836169550
}
2. secure: true ๋ง ๋จ๊ธด๋ค.
cookie: {
secure: true,
},
//console ์ถ๋ ฅ ๊ฒฐ๊ณผ
์ ์ฅ Session {
cookie: {
path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true,
secure: true
},
ooo: '์ค์ค์ค'
}
์ถ๋ ฅ Session {
cookie: {
path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true,
secure: true
}
}
์ฐพ์๋ค.!!!!!
secure ์ต์ ์ด ๋ฌธ์ ์๋๊ฒ!!
์ด ์ต์ ์ true์์ false๋ก ๋ฐ๊ฟ์ฃผ์ ๋ฐ๋ก ์ํ๋๋๋ก ์ถ๋ ฅ๋๊ธฐ ์์ํ๋ค.
๊ทผ๋ฐ ์ด ์ต์ ๋ค์ ์ด๋ค๊ฑธ ์๋ฏธํ๋ ๊ฑธ๊น?
๊ทธ๋ฅ ๋ณด์์์ ์ค์ํ ์์๋ผ๊ณ ๋ง ์๊ณ ์ฌ์ฉํ๋๋ฐ
์ข๋ ์ดํด๋ณด์๋ค.
๐ httpOnly: true
์ด๋ ๊ฒ ์ค์ ํ๋ฉด ํด๋ผ์ด์ธํธ์ชฝ javaScript์์ ์ฟ ํค์ ์ ๊ทผํ ์ ์๋ค.
๋ณด์์ ์ค์ํ ์ต์ ์ด๋ค.
๐ secure: true
์ด๋ ๊ฒ ์ค์ ํ๋ฉด, http ์ฐ๊ฒฐ์์ ์ ์ก๋๋๊ฑธ ๋ฐฉ์งํ๊ณ , https ํ๋กํ ์ฝ์ ํตํด์๋ง ์ ์ก๋๋ค.!!!
๋ณด์์ ์ค์ํ ์ต์ ์ด๊ธด ํ์ง๋ง, ๊ฐ๋ฐ์ค์๋ ์ฃผ๋ก false๋ก ์ค์ ๋์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ณ ,
์ค์ https ํ๊ฒฝ์์๋ง ์ฟ ํค๊ฐ ์ ์ก๋๋ค.
๊ณ์ http๋ก ์์ฒญ์ ๋ณด๋๊ธฐ ๋๋ฌธ์ ์๋ํ์ง ์์๋ ๊ฒ!!
๐ซ ๋๋์
์ธ์ ์ ์ด๋ ๊ฒ ๋ง์ ์๊ฐ์ ์ฌ์ฉํ ์ค ๋ชฐ๋๋ค.
์ฌ์ค ์๋ค๊ณ ์๊ฐํ์ง๋ง ์ ๋๋ก ๋ชฐ๋๋๊ฒ ๋ ์ปธ๋๊ฒ ๊ฐ๋ค.
์ธ์ ๋ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ฉด ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ์๋ํด ๋ณด๊ณ
๊ฐ์ฅ ์ค์ํ ๊ฑด ๊ทธ ๋ฐฉ๋ฒ๋ค์ ๊ธฐ์ตํ๋๊ฒ ์ค์ํ ๊ฒ ๊ฐ๋ค.
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
23/12/08 TIL __ Passport kakao ์นด์นด์ค ์ ๋ต ๋ฝ๊ฐ๊ธฐ (0) | 2023.12.09 |
---|---|
23/12/07 TIL __ Passport ๋ก์ปฌ (0) | 2023.12.08 |
23/12/05 TIL __ ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ (1) | 2023.12.05 |
23/12/04 TIL __ ํ ์คํธ ์ฝ๋(Jest) (0) | 2023.12.04 |
23/12/03 TIL __ 3๊ณ์ธต ์ํคํ ์ณ (0) | 2023.12.03 |