๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์ฃผ๊ฐ„ ํšŒ๊ณ 

11์›” ์ฒซ ๋ฒˆ์งธ ์ฃผ๊ฐ„ ํšŒ๊ณ 

by winteringg 2022. 11. 6.
๐Ÿ“š 221031-221104



์ด๋ฒˆ ์ฃผ ๋ฐฐ์šด ๊ฒƒ

 ์ด๋ฒˆ ์ฃผ๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ๋ฅผ ์ด์šฉํ•ด ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ/์ธ๊ฐ€๋ฅผ ๋ฐฐ์šฐ๋Š” ์ฃผ์ฐจ์˜€๋‹ค. ํšŒ์›๊ฐ€์ž… ํŒŒํŠธ์—์„œ๋Š” user๋ฅผ ๊ฐ€์ž…์‹œํ‚จ ํ›„ user ๊ฐ์ฒด๋ฅผ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์ €์žฅํ•œ๋‹ค. ๋กœ๊ทธ์ธ ํŒŒํŠธ์—์„œ๋Š” hash๋ฅผ ์ด์šฉํ•ด ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์ €์žฅ๋œ user์—๊ฒŒ ํ•„์š”ํ•œ ์•”ํ˜ธ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๊ณ  jwt๋ฅผ ์ด์šฉํ•ด user ์ •๋ณด๊ฐ€ ๋‹ด๊ธด ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•œ๋‹ค. ์ธ๊ฐ€ ํŒŒํŠธ์—์„œ๋Š” Spring security์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด ๋ฐ›์•„๋‚ธ ํ† ํฐ์œผ๋กœ ์ธ๊ฐ€๋ฅผ ๋ฐ›๋Š”๋‹ค.

  jwt ๋ฅผ ์ด์šฉํ•ด ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•˜๋ฉด ์„œ๋ฒ„ ์ž…์žฅ์—์„œ๋Š” ์ด ํ† ํฐ์œผ๋กœ ์‚ฌ์šฉ์ž๋ฅผ ์ฐพ๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ƒฅ ๋ฌด์ž‘์ • controller์— ๋˜์ ธ์„œ ์ฐพ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ interceptor๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. interceptor๋Š” ์ปจํŠธ๋กค๋Ÿฌ์— ์ „๋‹ฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๊ฐ„์—๊ฐ€๋กœ์ฑ„์„œ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์ „ ์˜ˆ์™ธ๋ฅผ ๋ฏธ๋ฆฌ ํ™•์ธํ•˜๊ณ  ๋˜์ ธ์ฃผ๋Š” ์—ญํ• ์ด๋‹ค. controller๋กœ ํ†ตํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” interceptor๋ฅผ ํ•œ ๋ฒˆ ํ†ต๊ณผํ•˜๊ณ  ์ง€๋‚˜๊ฐ€๊ธฐ ๋•Œ๋ฌธ์—, ๋งŒ์•ฝ interceptor ๊ฐ€ bean์— ๋Œ€ํ•œ ์˜์กด์„ฑ์„ ์ฃผ์ž…๋ฐ›์•˜๋‹ค๋ฉด ๋ชจ๋“  controller๋Š” ํ•ด๋‹น bean์— ๋Œ€ํ•œ ์˜์กด์„ฑ์„ ์ฃผ์ž…๋ฐ›์•„์•ผ ํ•œ๋‹ค. ์šฐ๋ฆฌ๋Š” jwt๋ฅผ ์ด์šฉํ•ด์„œ ํ† ํฐ์„ ๋ฐœ๊ธ‰๋ฐ›์•˜๊ณ  jwt๋ฅผ interceptor์— ์˜์กด์‹œ์ผฐ๊ธฐ ๋•Œ๋ฌธ์— jwt๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋‹ค๋ฅธ controller ๋“ค๋„ ๋ชจ๋‘ ์ด ์˜์กด์„ฑ์„ ์ฃผ์ž…๋ฐ›์•„์•ผ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 ์ด ์‚ฌ์‹ค์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ์œผ๋‹ˆ context ์˜ค๋ฅ˜๊ฐ€ ๋‚  ๋•Œ๋งˆ๋‹ค ๋””๋ฒ„๊น…์„ ํ•˜๊ธฐ ์ฐธ ์–ด๋ ค์› ์—ˆ๋Š”๋ฐ ๋ชฉ์š”์ผ์ฏค ๊ฐ‘์ž๊ธฐ ์˜๋ฌธ์ด ์ƒ๊ฒจ ๋™๊ธฐ๋“ค์—๊ฒŒ ์งˆ๋ฌธํ–ˆ๊ณ  ๊ฐ™์ด ํ™€๋งจ๋‹˜๊ป˜ ์งˆ๋ฌธ๋„ ํ•˜๊ณ  ๊ฒ€์ƒ‰๋„ ํ•ด๋ณด๊ณ  ํ•ด์„œ ๊ฒฐ๊ตญ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ์˜๋ฌธ๋งŒ ๊ฐ€์ง€๊ณ  ํ•ด๊ฒฐํ•˜์ง€ ์•Š์€ ์ฑ„ ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐ€๋Š” ์Šต๊ด€์€ ๊ณ ์ณ์•ผ๊ฒ ๋‹ค. ์‚ฌ์‹ค ๊ทธ ์ƒํ™ฉ๋งŒ ๋˜๋ฉด ๋„ˆ๋ฌด ํ•  ์ผ์ด ๋ฐ”๋น ์„œ ๋‚˜์ค‘์— ์•Œ์•„๋ด์•ผ์ง€~ ํ•˜๊ณ  ๋„˜์–ด๊ฐ€๊ณค ํ–ˆ๋Š”๋ฐ ๊ฒฐ๊ตญ ์ด๋Ÿฌํ•œ ์Šต๊ด€์€ ๋˜ ๋‹ค๋ฅธ ์ง€์‹์˜ ๋ถ€์ฑ„๋ฅผ ๋‚ณ๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์ž!

์•„์นจํ˜• ์ธ๊ฐ„

 ๋‚˜๋Š” ์›Œ๋‚™ ์•„์นจ์ž ๋„ ๋งŽ๊ณ  (์‚ฌ์‹ค ์•„์นจ์ž ์ด ์•„๋‹ˆ๋ผ ๊ทธ๋ƒฅ ์ž ์ด ๋งŽ์€ ๊ฑธ์ˆ˜๋„) ์ฃผ๋ง์— ํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์„ ๋ฌป๋Š”๋‹ค๋ฉด '๋Šฆ๊ฒŒ ์ผ์–ด๋‚˜๊ธฐ' ์ผ ์ •๋„๋กœ ์ž ์ด ๋งŽ์€ ์‚ฌ๋žŒ์ธ๋ฐ, ์ €๋ฒˆ ์ฃผ์— ์ด์–ด ์ด๋ฒˆ ์ฃผ๋„ 7์‹œ ๋ฐ˜~8์‹œ ์‚ฌ์ด ๋„์ฐฉ์œผ๋กœ ์ผ์ฃผ์ผ์„ ๋ณด๋ƒˆ๋‹ค. ๋ฉ”๊ฐ€ ํ…Œ๋ผ ์‹œ์ž‘ํ•  ๋•Œ๋งŒ ํ•ด๋„ 8์‹œ 57๋ถ„, ์ด๋Ÿฐ ์‹์œผ๋กœ ์ž‘์—…์‹ค์— ๋„์ฐฉ์„ ํ•˜๋‹ค ๋ณด๋‹ˆ 9์‹œ์— ์‹œ์ž‘๋˜๋Š” ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์‹œ๊ฐ„์—๋„ ๋„ˆ๋ฌด ํ—ˆ๊ฒ์ง€๊ฒ ์ฐธ์—ฌํ•˜๊ฒŒ ๋˜๊ณ  ๋งˆ์Œ๋„ ๊ธ‰ํ•ด์กŒ์—ˆ์ง€๋งŒ ์ผ์ฐ ์ผ์–ด๋‚˜๋Š” ์Šต๊ด€์„ ๋“ค์ด์ง€ ๋ชปํ•ด์„œ ๊ณ„์† ์—ฌ์œ ๋กญ์ง€ ๋ชปํ•˜๊ฒŒ ์ถœ๊ทผ์„ ํ–ˆ์—ˆ๋‹ค.

 ํ•˜์ง€๋งŒ ์‹œ๊ฐ„์ด ํ๋ฅผ ์ˆ˜๋ก ๋‚œ์ด๋„๋„ ๋†’์•„์ง€๋ฉด์„œ ์ผ์ฐ ๋‚˜์˜ค์ง€ ์•Š๊ณ ๋Š” ๋ชป ๋ฐฐ๊ธฐ๋Š” ์ˆ˜์ค€์œผ๋กœ ํ•  ์ผ์ด ๋งŽ์•„์ง€๋‹ค ๋ณด๋‹ˆ ์ตœ๊ทผ์—๋Š” ๊ณ„์† ์ผ์ฐ ์ถœ๊ทผ์„ ํ•˜๊ณ  ์žˆ๋‹ค. 5์ฃผ ์ฐจ ๋ ˆ๋ฒจํ…Œ์ŠคํŠธ ๋•Œ ๋ฐค์ƒ˜์„ ์˜ค๋ž˜ ํ•˜๋ฉด์„œ ๋ชธ์ด ๋„ˆ๋ฌด ๊ธ‰์†๋„๋กœ ์•ˆ ์ข‹์•„์ง€๋Š” ๊ฒƒ ๊ฐ™์€ ๊ฒฝํ—˜์„ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐค์„ ์ƒˆ์šฐ๋Š” ๊ฒƒ์€ ์ตœ๋Œ€ํ•œ ์ง€์–‘ ์ค‘์ด๊ณ , ์ด์ œ๋Š” ๋Šฆ๊ฒŒ๊นŒ์ง€ ํ•˜๋‹ค๊ฐ€ ์ง‘์— ๊ฐ€์„œ ์”ป๊ณ  ๋ฐ”๋กœ ์ž ๋“ค๊ณ  ์•„์นจ ์ผ์ฐ ์ถœ๊ทผํ•˜๋Š” ์ƒํ™œ๋กœ ๋ฐ”๊ฟจ๋Š”๋ฐ ์ด๊ฒƒ๋„ ๋‚˜ํ•œํ…Œ ์ž˜ ๋งž๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ๋‚ด ๋ชธ์ด ๋ฒ„ํ…จ๋งŒ ์ค€๋‹ค๋ฉด ๊ณ„์† ์œ ์ง€ํ•˜๊ณ  ์‹ถ๋‹ค. ๊ทธ๋ž˜๋„ ๋งค๋ฒˆ ์ƒˆ๋ฒฝ ๋‘ ์‹œ ๋„˜๊ฒŒ ์ž ๋“ค์ง€ ๋ชปํ•˜๋˜ ๋‚ด๊ฐ€ ์ด์ œ๋Š” ์ ์–ด๋„ 1์‹œ์—๋Š” ์ž ๋“ค๋‹ค ๋ณด๋‹ˆ ์•„์นจ์— ์ผ์ฐ ์ผ์–ด๋‚˜๋Š” ๊ฒƒ๋„ ๊ทธ๋ ‡๊ฒŒ ๊ดด๋กญ์ง€๋Š” ์•Š๋‹ค. ์ด๋ ‡๊ฒŒ ์•„์นจํ˜• ์ธ๊ฐ„์ด ๋˜์–ด๊ฐ€๋Š” ๊ฑธ๊นŒ? (๋‚ด ๊ธฐ์ค€ ์•„์นจ 6์‹œ 30๋ถ„ ์ •๋„์— ์ผ์–ด๋‚˜๋ฉด ์•„์นจํ˜• ์ธ๊ฐ„์ž„ใ…‹.ใ…‹) ์–ด์จŒ๋“  ํ•˜๋ฃจ๋ฅผ ์—ฌ์œ ๋กญ๊ฒŒ ์‹œ์ž‘ํ•˜๋Š” ์ƒํ™œ์€ ๋ฉ”๊ฐ€ ํ…Œ๋ผ ์ฝ”์Šค๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ณ„์† ์œ ์ง€ํ•ด๋ณด์ž!

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ

 ํ™€๋งจ๋‹˜๊ป˜์„œ ์ฝ”๋”ฉ ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ 30๋ถ„์„ ๋„˜์–ด๊ฐ€๊ฒŒ ๋˜๋ฉด ๊ทธ๋ƒฅ ๋‹ต์ง€๋ฅผ ์ฐพ์•„๋ณด๊ณ  ์ž๊ธฐ ๊ฒƒ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒŒ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์˜ˆ์ „์—๋„ ๋ง์”€ ํ•˜์…จ์—ˆ๋Š”๋ฐ ์š”์ฆ˜์—๋Š” ๋‹ค์‹œ ๋˜ ์˜ค๋ž˜ ๋งค๋‹ฌ๋ฆฌ๊ฒŒ ๋˜์–ด ๋ฒ„๋ ค์„œ ๊ณ ๋ฏผ์ด์—ˆ๋‹ค. ๋งˆ์นจ ๋”ฑ ์ด๋Ÿฐ ๊ธ€์„ ์˜ฌ๋ ค์ฃผ์…”์„œ.. ๋‹ค์‹œ ๋ฐ˜์„ฑํ•˜๊ฒŒ ๋˜๋Š” ๊ณ„๊ธฐ๊ฐ€ ๋๋‹ค. ์•ˆ ํ’€๋ฆฌ๋ฉด ๊ทธ๋ƒฅ ์ด๋”ฐ ์ €๋…์— ๋‹ค์‹œ ํ’€์–ด๋ด์•ผ์ง€, ํ•˜๊ณ  ๋ณด๋ฅ˜ํ•ด๋’€๋‹ค๊ฐ€ ์ €๋…์ด ๋˜๋ฉด ๋˜ ๋‹ค๋ฅธ ์ผ์„ ํ•˜๋Š๋ผ ๋ฐ”๋น ์„œ ์–ด์˜๋ถ€์˜ ๋‹ต์ง€๋ฅผ ์ฐพ๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ํšจ์œจ์„ฑ์ด ์•ˆ ์ข‹์•„์ง€๋Š” ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ๋Š๋ผ๊ธด ํ–ˆ๋‹ค.

 ์ฝ”๋”ฉ ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ๊ณ ๋ฏผํ•˜๋Š” ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ๊ธธ์–ด์ง€๋Š” ๊ฒŒ ๋˜ ๊ณ ๋ฏผ์ด๋ผ๊ณ  3๊ธฐ ์ฃผ๊ฐ„ํšŒ๊ณ  ์‹œ๊ฐ„ ๋•Œ ์–ธ๊ธ‰์„ ํ–ˆ๋Š”๋ฐ, ๋˜‘์Ÿ์ด ์ฅฌ์ฅฌ๊ฐ€ ์ผ๋‹จ ๊ทธ๋ƒฅ ๊ตฌ๋ฆฐ ๋ฐฉ์‹์œผ๋กœ๋ผ๋„ ์งœ๊ณ  ๋‚˜์ค‘์— ๋ฆฌํŒฉํ„ฐ๋ง ํ•˜๋Š” ์‹์œผ๋กœ ๊ฐ€์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•ด์ฃผ์—ˆ๋‹ค. for๋ฌธ๋งŒ ์“ฐ๋Š” ๊ฒŒ ๊ณ ๋ฏผ์ด๋ผ for ๋ฌธ์„ ์“ฐ์ง€ ์•Š๊ธฐ ์œ„ํ•ด์„œ ๊ณ ๋ฏผ๋งŒ ํ•˜๋‹ค 1์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฒ„๋ฆฌ๋Š” ํšจ์œจ์„ฑ ์ œ๋กœ์˜ ์‚ถ์„ ์‚ด๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, '์•„์ง์€ ๊ทธ๋Ÿด ๋•Œ๊ฐ€ ์•„๋‹ˆ๋‹ค'๋ผ๋Š” ํ™€๋งจ๋‹˜์˜ ๋ง๊ณผ ์ผ๋‹จ ๊ตฌํ˜„ ๋จผ์ € ํ•˜๋ผ๋Š” ์ฅฌ์ฅฌ์˜ ๋ง๋กœ ๋‹ค์‹œ ๋งˆ์ธ๋“œ๋ฅผ ๋ฐ”๊พธ๊ฒŒ ๋˜๋Š” ๊ณ„๊ธฐ๊ฐ€ ๋˜์—ˆ๋‹ค. ์ผ๋‹จ ํ•˜์ž!! ๋ฐ”๋กœ ์ŠคํŠธ๋ฆผ ์‚ฌ์šฉํ•ด์„œ reduce๋กœ ํ˜„๋ž€ํ•˜๊ฒŒ ํ’€์–ด๋ฒ„๋ ธ์œผ๋ฉด ์ง„์ž‘ ๋ฉ”๊ฐ€ ํ…Œ๋ผ์—์„œ ํ•˜์‚ฐํ–ˆ๊ฒ ์ง€ ์‹ถ๋‹ค..^^ ๋‹น์žฅ ๋‚ด์ผ ์˜ค์ „์— ์žˆ๋Š” ์ฝ”๋”ฉ ๋„์žฅ ์‹œ๊ฐ„๋ถ€ํ„ฐ ๋ฐ”๋กœ ์ ์šฉํ•ด๋ณด๋Š” ๊ฒƒ์œผ๋กœ! 


<11์›” ๋‘˜์งธ ์ฃผ ์•ก์…˜ํ”Œ๋žœ>

  1. ํ€˜์ŠคํŠธ ๊ณผ์ œ ๋ชฉ์š”์ผ์— ์™„๋ฃŒํ•˜๊ณ  ๊ธˆ์š”์ผ์—๋Š” ์ง€์‹ ๋ถ€์ฑ„ ๊ฐš๊ธฐ.
  2. ๋ฏธ๋ž˜์— ๋‚˜์—๊ฒŒ ๋„์›€์ด ๋  ๋งŒํ•œ til ์“ฐ๊ธฐ. (์ง€์—ฝ์ ์ธ ๋‚ด์šฉ์œผ๋กœ ๊ทธ ๋‚ ์˜ til ๋ฒ„๋ฆฌ์ง€ ์•Š๊ธฐ)
  3. ์‰ด ๋• ์ œ๋Œ€๋กœ ์‰ฌ๊ธฐ.
  4. ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๊ณ ๋ฏผ์‹œ๊ฐ„ 30๋ถ„ ๋„˜๊ธฐ์ง€ ์•Š๊ธฐ.

 

๋Œ“๊ธ€