๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ํšŒ๊ณ 

[KPTF] : Node.js 6์ฃผ์ฐจ

by ๊ถŒ์Šพํ–„ 2023. 7. 13.
์ด๋ฒˆ ์ฃผ ๋‚ด๊ฐ€ ํ•œ ์ผ
  • ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์—์„œ ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ์‹คํ˜„์‹œํ‚ค๊ธฐ
  • mongoose -> sequelize ๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ

Keep
  • ๊ฐ•์˜ ๋‚ด์šฉ ์ •๋ฆฌ ํ›„ ์ฝ”๋“œ๋กœ ์‹คํ˜„ํ•ด๋ณด๋Š” ๋ถ€๋ถ„
  • ๊ฐ•์˜ ์ฝ”๋“œ๋กœ ๋ณต์Šต ํ›„์— ๋‚˜๋งŒ์˜ ์ฝ”๋“œ๋กœ ๋‹ค์‹œ ์ฝ”๋“œ๋ฅผ ์งœ๋ณด๋Š” ๋ถ€๋ถ„
  • ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ๋ ˆํผ์ง€ํ† ๋ฆฌ์—์„œ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ๋ฅผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์€ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ๋น„๊ตํ•ด๋ณด๋Š” ๋ถ€๋ถ„

Problem
  • URI์—์„œ ๋ฏธ๋“ค์›จ์–ด๋ฅผ ๊ฑฐ์ณ ๋‹ค์Œ ๋ฏธ๋“ค์›จ์–ด๋กœ ์†ก์‹ ํ•˜๋Š”๋ฐ ๋ฐœ์ƒํ•˜๋Š” ๊ณผ์ •์—์„œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ
  • ์ฟ ํ‚ค๊ฐ’์— bearer ํƒ€์ž…์„ ์„ค์ •ํ•˜๊ณ  ๋ถ„๋ฆฌ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ, ์˜ค๋ฅ˜ ๋ฐœ์ƒ
  • jws์ƒ์„ฑ์„ ํ†ตํ•œ ๋กœ์ง ์‹คํ˜„์— ์žˆ์–ด์„œ ์–ด๋ ค์›€

Try
  • router์—์„œ ํšŒ์›๊ฐ€์ž… API๋ฅผ ์ง„ํ–‰ํ•˜๊ณ , User ์Šคํ‚ค๋งˆ๋ฅผ ํ†ตํ•ด์„œ ์ €์žฅ์„ ํ•˜๊ฒŒ ๋˜๋ฉด, User ์Šคํ‚ค๋งˆ์— virtual()์„ ํ†ตํ•ด ๊ฐ€์ƒ์˜ userId ๊ฐ’์„ ํ• ๋‹น์‹œํ‚จ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ์ •๋ณด๋ฅผ JSON์œผ๋กœ ๋ฐ˜ํ™˜ํ•  ๋•Œ virtual ๊ฐ’์ด ์ถœ๋ ฅ๋˜๋„๋ก ํ•œ๋‹ค.
  • ๋กœ๊ทธ์ธ API๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด์„œ, jwt๋ฅผ ์ƒ์„ฑํ•  ๋•Œ secretkey๋ฅผ ๊ฐ™์ด ํ• ๋‹น. ํ›„์— ์ฟ ํ‚ค๋Š” bearer ํƒ€์ž…์œผ๋กœ ์ง€์ •ํ•ด์„œ ์ƒ์„ฑํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด์„œ ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์— ์ ‘๊ทผ์„ ํ•  ๊ฒฝ์šฐ(๊ฒŒ์‹œ๊ธ€ ์ƒ์„ฑ, ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œ ๋“ฑ๋“ฑ) middleware๋กœ ์†ก์ถœํ•ด์„œ ํ•ด๋‹น ํ† ํฐ์˜ ์œ ํšจ์„ฑ์„ ํŒ๋‹จ. ์‹œํฌ๋ฆฟํ‚ค๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๊ฐ€ ๋ฐœ๊ธ‰ํ•œ ์ฟ ํ‚ค๊ฐ€ ๋งž๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณ ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์— ์ ‘๊ทผํ† ๋ก ๋งŒ๋“ค์—ˆ๋‹ค.

Feel
  • migration ์‚ฌ์šฉ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.
  • jws์˜ ๋‹จ์  : ์‰ฝ๊ฒŒ ๋ณ€์กฐํ•˜์ง€ ๋ชปํ•˜๋‚˜, ์‹œํฌ๋ฆฟ ํ‚ค๋ฅผ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š์•„๋„, ์ •๋ณด์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
    ๋”ฐ๋ผ์„œ, ๋ฏผ๊ฐํ•œ ์ •๋ณด๋Š” ๋‹ด์ง€ ์•Š๋Š”๊ฒƒ์ด ์ข‹๋‹ค.
  • jws์˜ ์žฅ์  : ๋ณ€์กฐ๊ฐ€ ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅ, ์ฟ ํ‚ค์ฒ˜๋Ÿผ ์„œ๋ฒ„์— ๊ฐ’์„ ์ €์žฅํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ์„œ๋ฒ„๋ฅผ statelessํ•˜๊ฒŒ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ํšŒ์›๊ฐ€์ž…๊ณผ ๋กœ๊ทธ์ธ์˜ ๋กœ์ง์„ ๊ตฌํ˜„ํ•จ์— ์žˆ์–ด์„œ jws ๋ฐ ์ฟ ํ‚ค๋ฅผ ์ƒ์„ฑํ•ด ๊ธฐ๋Šฅ ์‹คํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๋ถ€๋ถ„์„ ์•Œ์•˜๋‹ค.

https://github.com/Yooonzero/4-personal-assignment-create-backend-server-lv2

 

GitHub - Yooonzero/4-personal-assignment-create-backend-server-lv2: lv1 ๊ฐœ์ธ๊ณผ์ œ์— ๋กœ๊ทธ์ธ ๋ฐ ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ ์ถ”๊ฐ€

lv1 ๊ฐœ์ธ๊ณผ์ œ์— ๋กœ๊ทธ์ธ ๋ฐ ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๋ฒ„์ „. Contribute to Yooonzero/4-personal-assignment-create-backend-server-lv2 development by creating an account on GitHub.

github.com

 

 

#๋กœ๊ทธ์ธ๊ธฐ๋Šฅ #ํšŒ์›๊ฐ€์ž…๊ธฐ๋Šฅ #jws #webtoken #cookie_parser #middleware