๐Ÿ‘ฉ‍๐Ÿ’ป ์ •๋ฆฌ๊ธ€/๐Ÿ“– WIL

๐Ÿ‘ฉ‍๐Ÿ’ป ์ •๋ฆฌ๊ธ€/๐Ÿ“– WIL

[๐Ÿ“– WIL] jwt.getClaimAsString()

jwt.getClaimAsString()JSON Web Token (JWT) ์—์„œ ํŠน์ • ํด๋ ˆ์ž„์„ ๋ฌธ์ž์—ด๋กœ ์ถ”์ถœํ•˜๋Š” ๋ฉ”์„œ๋“œ โœด๏ธ claim ์ด๋ž€? ๐Ÿ‘‰ JWT์— ํฌํ•จ๋œ ์ •๋ณด๋กœ, ์ฃผ๋กœ ์‚ฌ์šฉ์ž ์ •๋ณด๋‚˜ ๊ถŒํ•œ ๋“ฑ๊ณผ ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ์Œ  โœณ๏ธ JWT ๊ตฌ์„ฑHeader : ํ† ํฐ ํƒ€์ž…๊ณผ ํ•ด์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํฌํ•จPayload : ํด๋ ˆ์ž„ ๋ฐ์ดํ„ฐ ํฌํ•จSignature : ํ† ํฐ์ด ๋ณ€์กฐ๋˜์ง€ ์•Š์•˜์Œ์„ ํ™•์ธํ•˜๋Š” ์„œ๋ช…  getClaimAsString()์˜ ๋™์ž‘์ž…๋ ฅ : ํด๋ ˆ์ž„์˜ ํ‚ค๋ฅผ ์ „๋‹ฌ์ถœ๋ ฅ : ํ•ด๋‹น ํด๋ ˆ์ž„์˜ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜// JWT ๊ฐ์ฒด๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •String username = jwt.getClaimAsString("username");String role = jwt.getClaimAsString("role");System..

๐Ÿ‘ฉ‍๐Ÿ’ป ์ •๋ฆฌ๊ธ€/๐Ÿ“– WIL

[๐Ÿ“– WIL] DTO, Resource, Entity

ํ‰์†Œ ํ”„๋กœ์ ํŠธํ•  ๋•Œ DTO๋Š” ๋งŽ์ด ์‚ฌ์šฉํ–ˆ์ง€๋งŒ, Resource ๊ฐœ๋…์€ ์‚ฌ์šฉํ•œ ์ ์ด ์—†์—ˆ๋‹ค.Resource๊ฐ€ ๋ญ”๋ฐ ?  ResourceRESTful API์—์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ ‘๊ทผํ•˜๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค๐Ÿ‘‰ REST API์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ œ๊ณตํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด ์‹ค๋ฌด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” Resource๋ฅผ RequestBody๋กœ ๋ฐ›์€ ํ›„ DTO๋กœ ๋‹ค์‹œ convert ํ•˜๊ณ  ์žˆ์Œconvert๋œ DTO๋ฅผ ์„œ๋น„์Šค ๊ณ„์ธต์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค์‹œ Resource๋กœ convertํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•จ DTO (Data Transfer Object)๋ฐ์ดํ„ฐ ์ „์†ก์šฉ ๊ฐ์ฒด๋กœ, ๋„คํŠธ์›Œํฌ ๊ฐ„ ๋˜๋Š” ๋ ˆ์ด์–ด ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ ์‚ฌ์šฉ ์ปจํŠธ๋กค๋Ÿฌ์™€ ์„œ๋น„์Šค ๊ณ„์ธต ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉ์›น ์š”์ฒญ์ด๋‚˜ ์‘๋‹ต ๋ฐ์ดํ„ฐ  Entity๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜..

๐Ÿ‘ฉ‍๐Ÿ’ป ์ •๋ฆฌ๊ธ€/๐Ÿ“– WIL

[๐Ÿ“– WIL] ์–ด๋…ธํ…Œ์ด์…˜๊ณผ ํด๋ž˜์Šค

@ToString(doNotUseGetters = true)toString() ๋ฉ”์„œ๋“œ ์ž๋™ ์ƒ์„ฑgetter ๋ฉ”์„œ๋“œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํ•„๋“œ์˜ ๊ฐ’์„ ์ง์ ‘ ์ ‘๊ทผํ•˜์—ฌ toString() ๋ฉ”์„œ๋“œ ์ƒ์„ฑ @VersionJPA/Hibernate์—์„œ ์—”ํ‹ฐํ‹ฐ์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ ๐Ÿ‘‰ @Version์ด ๋ถ™์€ ํ•„๋“œ๋Š” ์—”ํ‹ฐํ‹ฐ์˜ ๋ฒ„์ „์„ ๋‚˜ํƒ€๋ƒ„DB ๋™์‹œ์„ฑ ๋ฌธ์ œ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋‚™๊ด€์  ๋ฝ(Optimistic lock) ์ง€์›์—”ํ‹ฐํ‹ฐ๊ฐ€ ์ˆ˜์ •๋  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์ฆ๊ฐ€ DB์—์„œ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ, ํ•ด๋‹น ์—”ํ‹ฐํ‹ฐ์˜ ๋ฒ„์ „์ด ์ด์ „์— ๋กœ๋“œ๋œ ๋ฒ„์ „๊ณผ ์ผ์น˜ํ•œ์ง€ ํ™•์ธ ๋งŒ์•ฝ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ํ•ด๋‹น ์—”ํ‹ฐํ‹ฐ๋ฅผ ๋จผ์ € ์ˆ˜์ •ํ–ˆ์œผ๋ฏ€๋กœ OptimisticLockException ๋ฐœ์ƒ โœณ๏ธ ๋‚™๊ด€์  ๋ฝ (Optimistic Locking) ์ด๋ž€ ?๐Ÿ‘‰ ๋ฐ์ดํ„ฐ๋ฒ ์ด..

soogoori
'๐Ÿ‘ฉ‍๐Ÿ’ป ์ •๋ฆฌ๊ธ€/๐Ÿ“– WIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก