์ด์ ์ด์ ์ ์์ฑํ JwtService๋ฅผ ๊ฐ์ง๊ณ ๋ก๊ทธ์ธ ํ JWT๋ฅผ ๋ฐ๊ธํ๋ ์ฝ๋๋ฅผ ์์ฑํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์ดํ JWT๋ง์ผ๋ก ์ธ์ฆ์ ํ๋ ์ฝ๋๋ ์์ฑํ๋๋ก ํ๊ฒ ์ต๋๋ค. ์ํ๋ฆฌํฐ๋ฅผ ์ด์ฉํ JSON ๋ฐ์ดํฐ๋ก ๋ก๊ทธ์ธ (์๋ฃ) JWT๋ฅผ ์ด์ฉํ ์ธ์ฆ (์งํ ์ค) ๋๋ฉ์ธ, ํ
์ด๋ธ ์ค๊ณ, ์ํฐํฐ ์์ฑ ๋๊ธ ์ญ์ ๋ก์ง ๊ตฌํ ํ์๊ฐ์
+ ์ ๋ณด์์ ๋ฑ ํ์ ์๋น์ค ๊ตฌํ ๊ฒ์ํ ์๋น์ค ๊ตฌํ ๋๊ธ ์๋น์ค ๊ตฌํ (1๋๊ธ -> *(๋ฌดํ) ๋๋๊ธ ๊ตฌ์กฐ) ์์ธ ์ฒ๋ฆฌ ์์ธ ๋ฉ์ธ์ง ๊ตญ์ ํ ์นดํ
๊ณ ๋ฆฌ๋ณ ๊ฒ์ํ ๋ถ๋ฅ ๊ฒ์๊ธ ํ์ด์ง ๋์ ์ธ ๊ฒ์ ์กฐ๊ฑด์ ์ฌ์ฉํ ๊ฒ์ ์ฌ์ฉ์ ๊ฐ ์ชฝ์ง ๊ธฐ๋ฅ ๋ฌดํ ์ชฝ์ง ์คํฌ๋กค ๊ฒ์๋ฌผ & ๋๊ธ์ ๋ํ ์๋ ์ชฝ์ง์ ๋ํ ์๋ ์ ์ํ ์ฌ์ฉ์ ๊ฐ ์ค์๊ฐ ์ฑํ
ํ์๊ฐ์
์ ๊ฒ์ฆ(์: XX๋ํ๊ต XX๊ณผ๊ฐ ์๋๋ฉด ๊ฐ์
ํ ์ ์..
๐๏ธ Spring
์ด์ ๋ก๊ทธ์ธ๊น์ง ๊ตฌํ์ด ๋๋ฌ์ผ๋ ๋ก๊ทธ์ธ์ด ์ฑ๊ณตํ๋ฉด JWT๋ฅผ ๋ฐ๊ธํ์ฌ์ AccessToken๊ณผ RefreshToken์ ๊ฐ์ง๊ณ ๋ก๊ทธ์ธ ์์ด ์ธ์ฆ์ ์ฒ๋ฆฌํ๋ ์ฝ๋๋ฅผ ์์ฑํ๊ฒ ์ต๋๋ค. ์ํ๋ฆฌํฐ๋ฅผ ์ด์ฉํ JSON ๋ฐ์ดํฐ๋ก ๋ก๊ทธ์ธ (์๋ฃ) JWT๋ฅผ ์ด์ฉํ ์ธ์ฆ (์งํ ์ค) ๋๋ฉ์ธ, ํ
์ด๋ธ ์ค๊ณ, ์ํฐํฐ ์์ฑ ๋๊ธ ์ญ์ ๋ก์ง ๊ตฌํ ํ์๊ฐ์
+ ์ ๋ณด์์ ๋ฑ ํ์ ์๋น์ค ๊ตฌํ ๊ฒ์ํ ์๋น์ค ๊ตฌํ ๋๊ธ ์๋น์ค ๊ตฌํ (1๋๊ธ -> *(๋ฌดํ) ๋๋๊ธ ๊ตฌ์กฐ) ์์ธ ์ฒ๋ฆฌ ์์ธ ๋ฉ์ธ์ง ๊ตญ์ ํ ์นดํ
๊ณ ๋ฆฌ๋ณ ๊ฒ์ํ ๋ถ๋ฅ ๊ฒ์๊ธ ํ์ด์ง ๋์ ์ธ ๊ฒ์ ์กฐ๊ฑด์ ์ฌ์ฉํ ๊ฒ์ ์ฌ์ฉ์ ๊ฐ ์ชฝ์ง ๊ธฐ๋ฅ ๋ฌดํ ์ชฝ์ง ์คํฌ๋กค ๊ฒ์๋ฌผ & ๋๊ธ์ ๋ํ ์๋ ์ชฝ์ง์ ๋ํ ์๋ ์ ์ํ ์ฌ์ฉ์ ๊ฐ ์ค์๊ฐ ์ฑํ
ํ์๊ฐ์
์ ๊ฒ์ฆ(์: XX๋ํ๊ต XX๊ณผ๊ฐ ์๋๋ฉด ๊ฐ์
ํ ..
์ด๋ฒ์๋ ์ ๋ฒ ํฌ์คํ
์ ์ด์ด์ ์ํ๋ฆฌํฐ ํํฐ๋ฅผ ์ปค์คํ
ํ์ฌ ๋ก๊ทธ์ธ์ ์งํํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์ํ๋ฆฌํฐ๋ฅผ ์ด์ฉํ JSON ๋ฐ์ดํฐ๋ก ๋ก๊ทธ์ธ (์งํ ์ค) JWT๋ฅผ ์ด์ฉํ ์ธ์ฆ ๋๋ฉ์ธ, ํ
์ด๋ธ ์ค๊ณ, ์ํฐํฐ ์์ฑ ๋๊ธ ์ญ์ ๋ก์ง ๊ตฌํ ํ์๊ฐ์
+ ์ ๋ณด์์ ๋ฑ ํ์ ์๋น์ค ๊ตฌํ ๊ฒ์ํ ์๋น์ค ๊ตฌํ ๋๊ธ ์๋น์ค ๊ตฌํ (1๋๊ธ -> *(๋ฌดํ) ๋๋๊ธ ๊ตฌ์กฐ) ์์ธ ์ฒ๋ฆฌ ์์ธ ๋ฉ์ธ์ง ๊ตญ์ ํ ์นดํ
๊ณ ๋ฆฌ๋ณ ๊ฒ์ํ ๋ถ๋ฅ ๊ฒ์๊ธ ํ์ด์ง ๋์ ์ธ ๊ฒ์ ์กฐ๊ฑด์ ์ฌ์ฉํ ๊ฒ์ ์ฌ์ฉ์ ๊ฐ ์ชฝ์ง ๊ธฐ๋ฅ ๋ฌดํ ์ชฝ์ง ์คํฌ๋กค ๊ฒ์๋ฌผ & ๋๊ธ์ ๋ํ ์๋ ์ชฝ์ง์ ๋ํ ์๋ ์ ์ํ ์ฌ์ฉ์ ๊ฐ ์ค์๊ฐ ์ฑํ
ํ์๊ฐ์
์ ๊ฒ์ฆ(์: XX๋ํ๊ต XX๊ณผ๊ฐ ์๋๋ฉด ๊ฐ์
ํ ์ ์๊ฒ) Swagger๋ฅผ ์ฌ์ฉํ API ๋ฌธ์ ๋ง๋ค๊ธฐ ์ ๊ณ & ๋ธ๋๋ฆฌ์คํธ ๊ธฐ๋ฅ AOP๋ฅผ ํตํ ..
์ด๋ฒ์๋ ์ง๋ ํฌ์คํ
์ ์ด์ด์ ์คํ๋ง ์ํ๋ฆฌํฐ๋ฅผ ์ด์ฉํ์ฌ ๋ก๊ทธ์ธ์ ์งํํ๋ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ ์ ์คํ๋ง ์ํ๋ฆฌํฐ์ ๋ก๊ทธ์ธ ์งํ๋ฐฉ์์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ด๋ฒ ํฌ์คํ
์ ์กฐ๊ธ ๊ธธ๊ธฐ ๋๋ฌธ์, ์ ์ ์ข ๋ง์ ์ํ๋ก ์์ํ์๋๊ฑธ ์ถ์ฒ๋๋ฆฝ๋๋ค. ์ฐ์ ์คํ๋ง ์ํ๋ฆฌํฐ๋ฅผ ์ค์ ์ ํตํด, ๊ธฐ๋ณธ์ ์ธ ์ ๊ทผ ์ ์ด์, ์คํ๋ง ์ํ๋ฆฌํฐ์์ ์ ๊ณตํ๋ PasswordEncoder๋ฅผ ๋ฑ๋กํ๋๋ก ํ๊ฒ ์ต๋๋ค. ์ํ๋ฆฌํฐ๋ฅผ ์ด์ฉํ JSON ๋ฐ์ดํฐ๋ก ๋ก๊ทธ์ธ (์งํ ์ค) JWT๋ฅผ ์ด์ฉํ ์ธ์ฆ ๋๋ฉ์ธ, ํ
์ด๋ธ ์ค๊ณ, ์ํฐํฐ ์์ฑ ํ์๊ฐ์
+ ์ ๋ณด์์ ๋ฑ ํ์ ์๋น์ค ์ ๊ณต ์นดํ
๊ณ ๋ฆฌ๋ณ ๊ฒ์ํ ๋ถ๋ฅ ๊ฒ์๊ธ ํ์ด์ง 1๋๊ธ -> *(๋ฌดํ) ๋๋๊ธ ๊ตฌ์กฐ ๋์ ์ธ ๊ฒ์ ์กฐ๊ฑด์ ์ฌ์ฉํ ๊ฒ์ ์ฌ์ฉ์ ๊ฐ ์ชฝ์ง ๊ธฐ๋ฅ ๋ฌดํ ์ชฝ์ง ์คํฌ๋กค ๊ฒ์๋ฌผ & ๋๊ธ์ ๋ํ ์๋ ์ชฝ์ง์ ๋..
์ฌ์ค ์ด๋ป๊ฒ ์งํํด์ผ ํ ์ง ๊ณ ๋ฏผ์ ์กฐ๊ธ ํ์ต๋๋ค. ๋ก๊ทธ์ธ์ ๋จผ์ ํ๋๊ฒ ๋ง๋๊ฑด์ง, ๊ธฐ๋ฅ ๊ตฌํ์ด ๋จผ์ ์ผ์ง... ๊ทธ๋ฐ๋ฐ ์ต๊ทผ์ ์ํ๋ฆฌํฐ๋ฅผ ๊ณต๋ถํ๊ธฐ๋ ํ๊ณ , JWT ๊ด๋ จํด์ ๊ณต๋ถ๋ฅผ ์กฐ๊ธ ํด๋ณด๊ณ ์ถ์ ๋ง์์ด ์ปค์ (+ ์ถ๊ฐ๋ก ์ ๊ฐ ์ฐธ๊ณ ํ๋ ๋ธ๋ก๊ทธ์์๋ ๋ก๊ทธ์ธ์ ๋จผ์ ํ๋๋ผ๊ตฌ์) ๋ก๊ทธ์ธ ๋ถํฐ ๋ง๋ค๋๋ก ํ๊ฒ ์ต๋๋ค. ์ฐ์ ์ํฐํฐ๋ ํ์ ์ํฐํฐ์์ ๋ก๊ทธ์ธ์ ํ์ํ ๊ธฐ๋ณธ์ ์ธ ์ ๋ณด๋ง ๊ฐ์ง๊ณ ์์ฑํ๋๋ก ํ๊ฒ ์ต๋๋ค. ๋ก๊ทธ์ธ์ด ๋๋ ์ดํ, ์ ์ฒด์ ์ธ ์ ํ๋ฆฌ์ผ์ด์
์ ์๊ตฌ์ฌํญ์ ๋ถ์ํ์ฌ ๋๋ฉ์ธ์ ์ค๊ณ ํ ์ํฐํฐ๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ผ๋ก ์งํํ๊ฒ ์ต๋๋ค. ์ํ๋ฆฌํฐ๋ฅผ ์ด์ฉํ JSON ๋ฐ์ดํฐ๋ก ๋ก๊ทธ์ธ (์งํ ์ค) JWT๋ฅผ ์ด์ฉํ ์ธ์ฆ ๋๋ฉ์ธ, ํ
์ด๋ธ ์ค๊ณ, ์ํฐํฐ ์์ฑ ๋๊ธ ์ญ์ ๋ก์ง ๊ตฌํ ํ์๊ฐ์
+ ์ ๋ณด์์ ๋ฑ ํ์ ์๋น์ค ๊ตฌํ ๊ฒ์ํ ์..
์ ๊ฐ ๋ง๋ค ๊ฒ์ํ์ "์๋ธ๋ฆฌํ์"๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ๊ฒ์ํ์
๋๋ค. ์ง๋ฌธ์ ์ฌ๋ฆด ์๋, ์ ๋ณด๊ณต์ ๋ฅผ ํ ์๋, ์ก๋คํ ์ด์ผ๊ธฐ๋ค์ ์ฌ๋ฆด ์๋ ์๋ ๊ฒ์ํ์ด๋ผ ๋ณผ ์ ์๊ฒ ์ฃ . ๊ธฐ๋ณธ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ธฐ๋ฅ์ ์ด๋ฌํฉ๋๋ค. ์ค๊ฐ์ ์ถ๊ฐ๋๊ฑฐ๋ ์ญ์ ๋ ์๋ ์์ต๋๋ค. (๊ทธ๋ฅ ํ๊ณ ์ถ์๊ฑธ ์์ ์๊ฐ ์์ด ์ ์ด๋๊ฒ์ด๋, ์์๋๋ก ์งํํ์ง ์์ ์ ์์ต๋๋ค.) ์ํ๋ฆฌํฐ๋ฅผ ์ด์ฉํ JSON ๋ฐ์ดํฐ๋ก ๋ก๊ทธ์ธ JWT๋ฅผ ์ด์ฉํ ์ธ์ฆ ๋๋ฉ์ธ, ํ
์ด๋ธ ์ค๊ณ, ์ํฐํฐ ์์ฑ ๋๊ธ ์ญ์ ๋ก์ง ๊ตฌํ ํ์๊ฐ์
+ ์ ๋ณด์์ ๋ฑ ํ์ ์๋น์ค ๊ตฌํ ๊ฒ์ํ ์๋น์ค ๊ตฌํ ๋๊ธ ์๋น์ค ๊ตฌํ (1๋๊ธ -> *(๋ฌดํ) ๋๋๊ธ ๊ตฌ์กฐ) ์์ธ ์ฒ๋ฆฌ ์์ธ ๋ฉ์ธ์ง ๊ตญ์ ํ ์นดํ
๊ณ ๋ฆฌ๋ณ ๊ฒ์ํ ๋ถ๋ฅ ๊ฒ์๊ธ ํ์ด์ง ๋์ ์ธ ๊ฒ์ ์กฐ๊ฑด์ ์ฌ์ฉํ ๊ฒ์ ์ฌ์ฉ์ ๊ฐ ์ชฝ์ง ๊ธฐ๋ฅ ๋ฌดํ ์ชฝ์ง ..
์ง๊ธ๊น์ง ์คํ๋ง ๊ด๋ จํด์ ์ฌ๋ฌ ๊ณต๋ถ๋ฅผ ํ์์ง๋ง, ์ ์ ๊ฒ์ํ ํ๋ ์ ๋๋ก ๋ง๋ค์ด๋ณธ ์ ์ด ์์์ต๋๋ค. (๋งจ๋ ์น๊ตฌ๋ค์ด๋ ๋ง๋ ๋ค๊ณ ํ๋ค๊ฐ ๊ฒฐ๊ตญ ๋ค ์ค๊ฐ์ ๋ฉ์ถฐ๋ฒ๋ ธ์ต๋๋ค.) ์ ๊ฐ ํ๋ก ํธ์๋๋ฅผ ๋ค๋ฃจ์ง ๋ชปํ๋ค๋ณด๋, ์ค์ ๋ฐ์ดํฐ๊ฐ ๋์ ๋ณด์ฌ์ง๋๊ฒ๋ ํ์ธํ๊ธฐ ์ด๋ ต๊ณ , ๊ทธ๋ฌ๋ค๋ณด๋ ์ฌ๋ฏธ๋ ์์ด์ง๊ณ ๊ทธ๋์... ์ฌ์ค ๊ทธ๋ ๊ฒ ๊ฐ์ ์์
๋ง 3~4๋ฒ ๋ฐ๋ณตํ๊ณ ์ค์ ๋ก ๋ง๋ค์ด์ง ๊ฒฐ๊ณผ๋ฌผ์ด ์๋ค๋ณด๋ ํํ๊ฐ ์กฐ๊ธ ์์ต๋๋ค. ๊ทธ๋ ๊ฒ ์ด๋ก ๊ณต๋ถ๋ง ๊ณ์ ๋บ๋บ์ด ๋๋ฆฌ๋ ์ค์,, ์ค๋ ์คํ๋ง ์คํ์ฑํ
๋ฐฉ์ ์ด๋ค ํ๋ถ์ด ๊ฒ์ํ ๋๊ธ์ ๋ํด์ ์ง๋ฌธํ ๊ฒ์ ๋ณด์์ต๋๋ค. "์๋ธ๋ฆฌํ์" ์๋น์ค์ฒ๋ผ ๋๊ธ ํ๋์, ๋๋๊ธ์ด ๋ฌดํ์ ๋ฌ๋ฆด ์ ์๋ ๊ตฌ์กฐ์ ๋๊ธ์ ๋ง๋๋๋ฐ ์ด๋ ค์์ ๊ฐ์ง๊ณ ๊ณ์
์ ์ง๋ฌธ์ ์ฌ๋ฆฌ์
จ๋๋ฐ, ์ฌ์ค ์ ๋ ์ด๊ฒ ์์ ๋ถํฐ ๋งค์ฐ ๊ถ๊ธํ์ต๋๋ค. ๋๊ธ..
๐ง HttpMessageConverter @RequestBody๋ @ResponseBody๋ ๋ฉ์์ง ๋ฐ๋์ ๋ค์ด์๊ฑฐ๋ ๋ฉ์ธ์ง ๋ฐ๋์ ์์ฑ๋๋ ๋ฌธ์ ํน์ JSON ๋ฑ์ ๋ฐ์ดํฐ๋ฅผ String ๋๋ ๊ฐ์ฒด๋ก ๋ฐ๋ก ๋ณํํ์ฌ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด์ ๊ฐ์ด HTTP ๋ฉ์์ง ๋ฐ๋์ ๋ด์ฉ์ ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ๊ฒ ํธ๋ฆฌํ๋๋ก ๋ณํํ์ฌ ์ฃผ๋ ์ญํ ์ HttpMessageConverter๊ฐ ๋ด๋นํฉ๋๋ค. HttpMessageConverter๋ @RequestBody, HttpEntity๊ฐ ํ๋ผ๋ฏธํฐ์ ๋ถ์ด์๋ ๊ฒฝ์ฐ, ๊ทธ๋ฆฌ๊ณ ๋ฐํ ์ @ResponseBody ํน์ HttpEntity๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์๋ํฉ๋๋ค. ๐ง HttpMessageConverter ๊ตฌ์กฐ HTTP ๋ฉ์์ง ์ปจ๋ฒํฐ๋ ์ธํฐํ์ด์ค๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. public in..