๊ณผ์ ํธ๋ฌ๋ธ ์ํ
๋ฌธ์ ์ํฉ
Filter์์ ๋ฐ์ํ๋ ์์ธ๋ฅผ GlobalExceptionHandler๋ฅผ ์ด์ฉํด์ ํด๊ฒฐํ๋ ค๊ณ ํ์ง๋ง, Postman์ ์คํํ์ ๋ 500 Internal Error๊ฐ ๋ฐ์ํ๋ค.
๋ฌธ์ ์์ธ
@RestControllerAdvice๋ Filter์์ ๋ฐ์ํ ์์ธ๋ฅผ ์ฒ๋ฆฌํ์ง ์๋๋ค.
- Filter๋ Controller๋ก ์์ฒญ์ด ์ ๋ฌ๋๊ธฐ ์ ์ ์คํ๋๊ธฐ ๋๋ฌธ์, @RestController๋ก ์ฒ๋ฆฌํ ์ ์๋ ์์ญ์ด๋ค.
์ด๋ก ์ธํด ์์ธ๋ฅผ ์ฒ๋ฆฌํ์ง ๋ชปํ๊ณ 500 Internal Error๊ฐ ๋ฐํ๋์๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
Filter ๋ด์์ ์ง์ HTTP ์ํ ์ฝ๋์ ์๋ฌ ๋ฉ์์ง๋ฅผ ์ค์ ํด์ ์๋ตํ๋๋ก ์์ ํ๋ค.
์์ ๋ ์ฝ๋
if (session == null || session.getAttribute("loginMember") == null) {
httpResponse.setCharacterEncoding("UTF-8"); // UTF-8๋ก ์ธ์ฝ๋ฉ ์ค์
httpResponse.setContentType("application/json; charset=UTF-8"); // Content-Type ์ค์
httpResponse.setStatus(HttpStatus.UNAUTHORIZED.value());
Map<String, String> errorResponse = new HashMap<>();
errorResponse.put("errorCode", "401 UNAUTHORIZED");
errorResponse.put("error", "๋ก๊ทธ์ธํ์ง ์์ ์ํ์
๋๋ค. ๋ก๊ทธ์ธ ํด์ฃผ์ธ์.");
ObjectMapper objectMapper = new ObjectMapper();
String jsonResponse = objectMapper.writeValueAsString(errorResponse);
httpResponse.getWriter().write(jsonResponse);
return;
}
์์ ํ Postman์ผ๋ก ๋ค์ ์์ฒญ์ ๋ณด๋๊ณ , ์ ์์ ์ผ๋ก 401 ์ํ ์ฝ๋์ ์๋ฌ ๋ฉ์์ง๊ฐ ๋ฐํ๋์๋ค.
๊ฒฐ๋ก
- Filter์ ๊ฐ์ ์ปจํธ๋กค๋ฌ ์ธ๋ถ์ ์์ธ๋ ์ง์ ์ฒ๋ฆฌํด์ผ ํ๋ค๋ ๊ฒ์ ๋ฐฐ์ ๋ค.
- GlobalExceptionHandler๋ Controller ๋ด์์ ๋ฐ์ํ ์์ธ๋ง ์ฒ๋ฆฌํ๋ฏ๋ก, ๊ฐ ๊ณ์ธต๋ณ ์์ธ ์ฒ๋ฆฌ ๋ฐฉ์์ ์ฐจ์ด๋ฅผ ์ดํดํ๊ณ ์ ์ ํ ๋์ํด์ผ ํ๋ค.