๐Ÿ‘จ‍๐Ÿ‘ฉ‍๐Ÿ‘ง‍๐Ÿ‘ฆ Project/๐Ÿ“บ KIOSEK

Jwt Token ์ธ์ฆ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ memberId๋ฅผ path variable๋กœ ๋ฐ›๋Š”๊ฒƒ์€ ๋ณด์•ˆ์ ์ธ ์ด์Šˆ๊ฐ€ ์žˆ๋‹ค.

DevPoong 2023. 5. 14. 23:31

1. ๋ฌธ์ œ ์ƒํ™ฉ


์‹ค์ œ ์šด์˜ํ•ด์•ผ ํ•˜๋Š” ์‚ฌ์ดํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์ ์ธ ์ด์Šˆ๋“ค์„ ๊ณ„์† ์ƒ๊ฐํ•˜๊ณ  ์ˆ˜์ •ํ•ด ๋‚˜๊ฐ€๊ณ  ์žˆ๋‹ค. 

๊ธฐ์กด์—๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด ๋งˆ์ดํŽ˜์ด์ง€ ์ •๋ณด๋ฅผ ์–ป์–ด์˜ค๋Š” Rest API๋ฅผ /api/members/{memberId} ๋ผ๊ณ  ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„ํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ Https ํ”„๋กœํ† ์ฝœ์„ ์ ์šฉํ•˜๋”๋ผ๋„ path variable ๋˜๋Š” query parameter๋กœ ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ๋Š” URI์— ํฌํ•จ๋˜์–ด ์•”ํ˜ธํ™”๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์ ์œผ๋กœ ์ข‹์ง€ ์•Š์„๋ฟ๋”๋Ÿฌ
Jwt token ์ธ์ฆ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ํ† ํฐ์— ์‚ฌ์šฉ์ž ์‹๋ณ„์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ๋Š”๋ฐ ๊ตณ์ด ํด๋ผ์ด์–ธํŠธํ•œํ…Œ ๋‹ค์‹œ ๋ณธ์ธ์— ๋Œ€ํ•œ ํ‚ค๋ฅผ ๋ฐ›์„ ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ–ˆ๋‹ค.

 

 

2. ๋ฌธ์ œ ํ•ด๊ฒฐ


โœ๏ธ HttpServeletRequest๋ฅผ ์‚ฌ์šฉํ•˜์ž

HttpServletRequest๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž์˜ Http ์š”์ฒญ์˜ header ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
์ด๋ฅผ ์ด์šฉํ•ด Authorization ํ—ค๋”๋ฅผ ํ†ตํ•ด ๋ฐ›์€ Access Token์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์‹๋ณ„์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

@GetMapping("api/v1/members")
public SuccessResponse<MemberInfoRes> getMemberProfile(HttpServletRequest request) {
    String resolvedToken = jwtTokenProvider.resolveToken(request.getHeader(AUTHORIZATION_HEADER));

    MemberInfoRes memberInfo = memberSearchService.searchMyPageInfo(
            Long.parseLong(jwtTokenProvider.getSubject(resolvedToken)));
            
    return new SuccessResponse<>(MYPAGE_SEARCH_SUCCESS, memberInfo);
}

ํ•ด๋‹น ์ฝ”๋“œ๋Š” ์˜ˆ์‹œ์ด๋ฉฐ ์œ„์™€ ๊ฐ™์ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ๊ฐ€์ ธ์™”๋‹ค.