์ฃผ์์๊ฑด
โข
์ฝ๋๋ ์ค๊ณ ์์ ๋ด์ญ ํ์ด์ง๊ฐ ์์ผ๋ฉด ์ข์ ๊ฑฐ ๊ฐ๋ค
โข
ํ์๊ฐ์
, ๋ก๊ทธ์ธ ๊ตฌํ ๊น ๋จธ์ง
โข
CommonResponseDto, ExceptionResponse ๋ฐํํ ๋ HttpStatus ๋ง๊ณ Integer๋ก Value ๋ฝ์์ ๋ฐํ
โข
์ฑ๊ณตํ์ ๋์ ๋ฉ์ธ์ง๋ฅผ Enum์ผ๋ก ์ ๋ฆฌ
โข
์ฌ์ง ์
๋ก๋ ๋ฐ ๋ถ๋ฌ์ค๊ธฐ
โข
๊ฐ๊ฒ๋ ํ์๋น ํ๋๋ก ๊ตฌํ
โข
ERD ์์
โข
์ปค๋ฐํผ์
โข
๊ฐ๊ฒ ์์ธ ์ฒ๋ฆฌ, Valid
ํ์ ๋ด์ฉ
โข
์ฝ๋๋ ์ค๊ณ ์์ ๋ด์ญ ํ์ด์ง๊ฐ ์์ผ๋ฉด ์ข์ ๊ฑฐ ๊ฐ๋ค
โฆ
ํ์ ๋๋๊ณ ์์ ์์ฑ
โข
ํ์๊ฐ์
, ๋ก๊ทธ์ธ ๊ตฌํ ๊น ๋จธ์ง
โฆ
๋ฆฌํ๋ ์๊น์ง ๊ตฌํํ ๋ค์์ Pr
โข
CommonResponseDto, ExceptionResponse ๋ฐํํ ๋ HttpStatus ๋ง๊ณ Integer๋ก Value ๋ฝ์์ ๋ฐํ
โข
์ฑ๊ณตํ์ ๋์ ๋ฉ์ธ์ง๋ฅผ Enum์ผ๋ก ์ ๋ฆฌ
โฆ
Exception Enum Class์ ๋น์ทํ๊ฒ ์ฑ๊ณตํ์ ๋๋ enum์ผ๋ก ์ ๋ฆฌํด์ ๋์ค๋ ๊ฒ ์ข์ ๊ฑฐ ๊ฐ๋ค.
โข
์ฌ์ง ์
๋ก๋ ๋ฐ ๋ถ๋ฌ์ค๊ธฐ
โฆ
์ฃผ์๊ฐ์ผ๋ก ์
๋ก๋๋ฅผ ๊ตฌํํ๋๋ฐ ์ด ๋ถ๋ถ ๋ถ๋ฌ์ค๊ธฐ๋ฅผ ๊ตฌํํด์ผํ๋ ๊ณ ๋ฏผ
โฆ
ํ๋ก ํธ์๋์์ ๊ตฌํํ๊ธฐ ๋๋ฌธ์ ์ฃผ์๊ฐ๋ง dto์ ๋ด์๋ ๊ด์ฐฎ์ ๋ฏ
โข
๊ฐ๊ฒ๋ ํ์๋น ํ๋๋ก ๊ตฌํ
โฆ
๋ฉ๋ด๋น ์ฌ์ง๋ ํ๋๋ก ๊ตฌํํ๋ ๊ฒ ์ข์ ๊ฑฐ ๊ฐ๋ค
โข
ERD ์์
โฆ
ERD ๋ด์์ ์ฅ๋ฐ๊ตฌ๋์์ ๋ฉ๋ด FK์ ๊ฐ๊ฒFK๋ฅผ ๊ฐ๊ณ ์๋๋ฐ, ๋ฉ๋ด ์ํฐํฐ์์๋ ๊ฐ๊ฒ FK๋ฅผ ๊ฐ๊ณ ์์ผ๋ ERD ์ค๊ณ ์์
โฆ
๊ฐ๊ฒ FK๋ฅผ ๋ฃ์ง ๋ง๊ณ ์ฅ๋ฐ๊ตฌ๋์์ ๊ฐ๊ฒ๋ฅผ ๊ฒ์ฌํ๋ ๋ฐฉ์์ผ๋ก ์งํ
โข
์ปค๋ฐ ํผ์
โฆ
ํผ์์ ์์ฃผ ํ๋ ๋ฐฉ์์ผ๋ก ์งํํ๋์ง ๊ธฐ๋ฅ ๊ตฌํ์ด ๋ค ์๋ฃ๋๊ณ ๋์ ํผ์ํ๋ ๊ฑธ ํ๋์ง
โฆ
์ปค๋ฐ์ ์์ฃผ, ํผ์์ ๋๋ฉ์ธ ์ ๋ถ ๊ธฐ๋ฅ ๊ตฌํ ์๋ฃ ํ
โข
๊ฐ๊ฒ ์์ธ ์ฒ๋ฆฌ, Valid
โฆ
๊ฐ๊ฒ ์ด๋ฆ, ์ฃผ์, ์๊ฐ๊ธ์ Unique ํ์ง ์์๋ ๋ ๊ฑฐ ๊ฐ๋ค
โฆ
๊ฐ๊ฒ ์ฌ์ง์ Unique
โฆ
์์ ์นดํ
๊ณ ๋ฆฌ, ์ฃผ์, ์ ํ๋ฒํธ๋ฑ ์ Vaild ์ฒ๋ฆฌ
โช
์นดํ
๊ณ ๋ฆฌ - ํ๊ธ ์
๋ ฅ ๊ฐ๋ฅ
โช
์ฃผ์ - ํ๊ธ, ์์ด, ํ์ดํ๋ง ์
๋ ฅ๊ฐ๋ฅ
โข
(regexp = "^[a-zA-Z0-9๊ฐ-ํฃ-]+$")
โช
์ ํ๋ฒํธ - ํ์ดํํฌํจ ์ซ์๋ง ์
๋ ฅ๊ฐ๋ฅ
์ง๋ฌธ ๋ฆฌ์คํธ
โข
RefreshToken DB๋ก Redis๋ฅผ ์ฌ์ฉํ๋ ์ด์ ?
โฆ
Redis - ์ธ ๋ฉ๋ชจ๋ฆฌ DB - ํ
์ด๋ธ๋ง ์๋ค๋ ํน์ง์ ๊ฐ์ง๊ณ ์์
โช
๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๋ค
โช
๋จ์ํ๊ณ ๋น ๋ฅด๋ค
โช
๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ์ข๋ค
โช
NoSQL
โช
๊ฒ์ฆ์ ์ํ๊ณ ๋ฐ๋ก ๋ฎ์ด ์์ฐ๋ฉด ๋๋ค - ํ๋ฐ์ฑ์ด ๊ฐํจ
โฆ
H2
โช
๊ด๊ณํ DB
โช
๋ด๋ถ์ ์ผ๋ก ๋ฆด๋ ์ด์
์ ์ก๋๋ค
โช
์คํค๋ง๊ฐ ์กด์ฌ
โช
๋ฐ์ดํฐ๋ผ๋ฆฌ ์ฐ๊ด๊ด๊ณ๊ฐ ์๋ค
โช
Redis ๋๋น ๋๋ฆฌ๋ค
โข
๋ก๊ทธ์์ ๊ธฐ๋ฅ ๊ตฌํ
โฆ
์ง๋ฌธ:
โฆ
Redis์ ์ ์ฅํ Refresh Token์ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํ์ ํ๋๋ฐ ์ด ๋ฐฉ๋ฒ์ด ๋ง๋์ง ๋ชจ๋ฅด๊ฒ ๋ค
โฆ
Refresh Token์ ์ญ์ ํด๋ Access Token์ ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ์ง๊ณ ์๋ค๋ฉด ๊ทธ๋๋ก ๋ก๊ทธ์ธ ํ ์ ์์ง ์๋?
โช
๋ต๋ณ:
โช
๋ฐฑ์๋์์ ์ก์ธ์ค ํ ํฐ์ ๋ฐ๊ธํด์ ํ๋ก ํธ์๋ค๊ฐ ๋ด๋ ค์ฃผ๋๋ฐ ํ๋ก ํธ ์ฌ์ด๋์์ ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ ์ฅํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ค
โช
๋ก๊ทธ์์์ ๊ตฌํ ํ ๊ฒฝ์ฐ์๋ ๋ก์ปฌ ์คํ ๋ฆฌ์ง์์ ์ก์ธ์ค ํ ํฐ์ ๋ ๋ ค์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๋ค.
โช
์ด์ฐจํผ Redis์ Refresh Token์ ์ ์ฅํ ๋ ์๊ฐ์ ์ง์ ํด์ค์ ๋ง๋ฃ๊ฐ ๋๊ธฐ ๋๋ฌธ์
โข
์์ ๋ต๋ณ์ ๋ฃ๊ณ ๊ถ๊ธํ ์
โฆ
๊ทธ๋ผ Access Token๋ง์ ํ๋ก ํธ์ฌ์ด๋์์ ๋ก์ปฌ์คํ ๋ฆฌ์ง์์ ์ญ์ ์ํจ๋ค๋ฉด, Refresh Token์ ์์ผ๋๊น ์ธ๊ฐ๊ฐ ํ์ํ ๋ถ๋ถ์ผ๋ก ๋ค์ด๊ฐ๋ฉด Refresh Token์ ํตํ Access Token์ ๋ค์ ๋ฐ๊ธํด์ฃผ๊ธฐ ๋๋ฌธ์ ๋ก๊ทธ์์์ด ๋๋ค๊ณ ๋ณด๊ธฐ ํ๋ค์ง ์๋?
โฆ
Refresh Token๊น์ง๋ ๋ก์ปฌ ์คํ ๋ฆฌ์ง์์ ์ญ์ ๋ฅผ ์ํจ๋ค๊ณ ์ณ๋, Redis DB์์๋ ์ญ์ ๋ฅผ ์ํค์ง ์๊ธฐ ๋๋ฌธ์ Refresh Token์ ํ์ทจ ๋นํ์ ๋ Access Token์ ๊ณ์ ๋ฐ๊ธ ๋ฐ์ ์ ์๋ค๋ ๋ฌธ์ ์ ์ด ์๊ธธ ์ ์์ง ์๋?
โข
๋๋ Redis DB์์๋ Refresh Token์ ์ญ์ ํ๋ ๊ฒ ๋ง๋ค๊ณ ์๊ฐํ๋ค