๐ŸŒ ํ† ํฐ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•

๋ฐ•ํฌ์ˆ˜ยท2023๋…„ 11์›” 9์ผ
0
post-thumbnail

1. web storage

๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.
DB์— ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ์™€ ๋‹ฌ๋ฆฌ ์‚ญ์ œ๋˜์–ด๋„ ์ƒ๊ด€ ์—†๋Š” ์†Œ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ์ดํ„ฐ ์ €์žฅ์„ ๋ถ€๋‹ดํ•œ๋‹ค. ์‚ฌ์šฉ์ž์˜ ํ•˜๋“œ์›จ์–ด์— ์˜์กดํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํƒ„์ƒ (์šฉ๋Ÿ‰์€ 5MB์ •๋„)
local storage์™€ session storage๋กœ ๋‚˜๋‰œ๋‹ค.

1-1. local storage

์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ข…๋ฃŒ๋˜์–ด๋„ ๋๊นŒ์ง€ ๋‚จ์•„์žˆ๋Š”๋‹ค.
์˜๊ตฌ์ ์ธ ์Šคํ† ๋ฆฌ์ง€์ด๊ณ , ๋‹ค๋ฅธ ํƒญ์—์„œ๋„ ๊ณต์œ ๋œ๋‹ค๋Š” ํŠน์ง•์„ ๊ฐ–๊ณ  ์žˆ๋‹ค.
์›น ๋„๋ฉ”์ธ๋‹น 1๊ฐœ์”ฉ ์ƒ์ •๋˜๋ฉฐ, session storage์™€ ๋‹ค๋ฅด๊ฒŒ ์ƒˆ์ฐฝ์„ ๋„์›Œ๋„ ๋„๋ฉ”์ธ๋งŒ ๊ฐ™์œผ๋ฉด ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•œ๋‹ค. ๋‹จ, ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์˜ local storage์—๋Š” ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€ํ•˜๋‹ค.
ex) ๋น„ํšŒ์› ๋กœ์ง, access token

1-2. session storage

๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์‰ฝ๊ฒŒ ์‚ฌ๋ผ์ง„๋‹ค.
์ƒˆ์ฐฝ ์ƒˆํƒญ์˜ ๋‹จ์œ„๋กœ ์Šคํ† ๋ฆฌ์ง€ ์ƒ์„ฑ, ๊ฐ™์€ ํƒญ์ด๋ผ๋„ ๋„๋ฉ”์ธ์ด ๋‹ค๋ฅด๋ฉด ๋˜๋‹ค๋ฅธ ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
์ผํšŒ์„ฑ ์Šคํ† ๋ฆฌ์ง€์ด๋‹ค.
๋งŒ๋ฃŒ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ๋‚ ์•„๊ฐ„๋‹ค, ์›นํŽ˜์ด์ง€ ์„ธ์…˜์ด ๋๋‚˜๋ฉด ๋ฐ์ดํ„ฐ๋Š” ์‚ญ์ œ๋œ๋‹ค.
ํƒญ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š๊ณ  ๊ฒฉ๋ฆฌ๋˜์–ด ์ €์žฅํ•œ๋‹ค.

1-3. ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

setItem(key, value) โ†’ key, value๋ฅผ ์Œ์œผ๋กœ ์ €์žฅ
getItem(key) โ†’ ํ•ด๋‹น key ์กฐํšŒ
removeItem(key) โ†’ ํ•ด๋‹น key ์‚ญ์ œ
clear() โ†’ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์‚ญ์ œ
length โ†’ ํ‚ค, ๊ฐ’ ์Œ์˜ ๊ฐœ์ˆ˜

2. ์ฟ ํ‚ค ๐Ÿช

1. ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅ๋œ key-value ํ˜•์‹์˜ ๋ฌธ์ž์—ด ํŒŒ์ผ  
2. ๋”ฐ๋กœ ์„ค์ •ํ•ด์ฃผ์ง€ ์•Š์•„๋„ ์„œ๋ฒ„์™€์˜ ๋ฐ์ดํ„ฐ ๊ตํ™˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค 
3. https, secure ์˜ต์…˜์„ ํ†ตํ•ด์„œ https ํ™˜๊ฒฝ์—์„œ๋งŒ ๊ตํ™˜์ด ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜, ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅ ํ•˜๋„๋ก ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค
4. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ซํžˆ๋ฉด ์‚ญ์ œ๋œ๋‹ค, but ์œ ํšจ๊ธฐ๊ฐ„์„ ๋ช…์‹œํ•˜๋ฉด ๋‹ซํ˜€๋„ ์‚ญ์ œ๋˜์ง€ ์•Š๋Š”๋‹ค. 
ex) refresh token, session-id, ์ž๋™๋กœ๊ทธ์ธ, ํŒ์—…์ฐฝ 3์ผ๊ฐ„ ๋ณด์ง€์•Š๊ธฐ

3. state(๋น„์ถ”)

๋ณด์•ˆ์ด ๋ณ„๋กœ ์ค‘์š”ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, ํ™”๋ฉด์„ ๋„๋ฉด ๋กœ๊ทธ์ธ์ด ์ข…๋ฃŒ๋˜๋Š” ๊ฒฝ์šฐ
ex) ๋กœ๊ทธ์ธ์ด ์™„๋ฃŒ๋˜์—ˆ์„ ๋Œ€ ์‹คํ–‰ํ•ด์•ผํ•˜๋Š” ๋กœ์ง์ด ์žˆ๊ณ , ๊ทธ ๋กœ์ง์ด ui๋ฅผ ๋ณ€๊ฒฝ์‹œ์ผœ์•ผ ํ•œ๋‹ค๋ฉด?
1. ์ƒˆ๋กœ๊ณ ์นจ, ํŽ˜์ด์ง€ ์ด๋™ โ†’ ํŽ˜์ด์ง€ ๊นœ๋นก์ž„์ด ์กด์žฌ
2. ์ „์—ญ์ƒํƒœ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ โ†’ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๊ณ , ์ „์—ญ์ƒํƒœ๋กœ state๋ฅผ ๊ด€๋ฆฌํ•จ์œผ๋กœ์จ ui๋ณ€๊ฒฝ. ui๋Š” state๊ฐ€ ์•„๋‹ˆ๋‹ค, session storage, local stage ๋ชจ๋‘ state๊ฐ€ ์•„๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ value์ผ ๋ฟ์ด๋‹ค.

JSON Token์˜ ์žฅ์ 

  • ์„œ๋ฒ„ ์ชฝ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฑฐ์˜ ๋ชจ๋“  ๊ณณ์— ํ† ํฐ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๊ณ , ์„œ๋ฒ„์—์„œ ํ† ํฐ์„ ํ™•์ธํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜, ์‹œํฌ๋ฆฟ ํ‚ค ํ•˜๋‚˜๊ฐ€ ์–ด๊ธ‹๋‚˜๋„ ๊ณ ์žฅ์ด ๋‚œ๋‹ค.
  • ๋ณ„๋„์˜ ์ €์žฅ์†Œ์— ์ •๋ณด๋ฅผ ์ €์žฅํ•ด๋‘˜ ํ•„์š”๊ฐ€ ์—†๋‹ค.

BACK -> FRONT

1. res.body โ†’ res์˜ body ๊ฐ’์œผ๋กœ ์ „๋‹ฌ 
2. res.header
3. cookies๋กœ ์ „๋‹ฌ

FRONT -> BACK

1. res.body 
2. cookies 
โ†’ axios ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์‹œ withCredential = true
์ด๋ ‡๊ฒŒ ๋„ฃ์–ด์ฃผ๋ฉด ์„œ๋ฒ„ ๊ฐ„์˜ ํ† ํฐ์—์„œ ํ‚ค๋ฅผ ์„œ๋กœ ๊ตํ™˜ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•ด์ค€๋‹ค. 
3. res.header
โ†’ axios interceptor 
โ†’ axios ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์‹œ default value๋กœ ๋„ฃ์–ด์ค„ ์ˆ˜ ์žˆ๋‹ค.
profile
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค :)

0๊ฐœ์˜ ๋Œ“๊ธ€