From 03287a0ac10479eb7a5ef9dba8aa3c362f50bfc9 Mon Sep 17 00:00:00 2001 From: Anna-Jin Date: Fri, 29 Jul 2022 01:30:51 +0900 Subject: [PATCH] =?UTF-8?q?#31=20[Update]=20=EA=B6=8C=ED=95=9C=EC=9D=B4=20?= =?UTF-8?q?=EB=8B=A4=EB=A5=BC=20=EB=95=8C=20(user,=20admin)=20=EC=98=88?= =?UTF-8?q?=EC=99=B8=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jwt/handler/TokenAccessDeniedHandler.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/mpnp/baechelin/login/jwt/handler/TokenAccessDeniedHandler.java b/src/main/java/com/mpnp/baechelin/login/jwt/handler/TokenAccessDeniedHandler.java index fa6e506..875cb31 100644 --- a/src/main/java/com/mpnp/baechelin/login/jwt/handler/TokenAccessDeniedHandler.java +++ b/src/main/java/com/mpnp/baechelin/login/jwt/handler/TokenAccessDeniedHandler.java @@ -1,5 +1,7 @@ package com.mpnp.baechelin.login.jwt.handler; +import com.google.gson.JsonObject; +import com.mpnp.baechelin.exception.ErrorCode; import lombok.RequiredArgsConstructor; import org.springframework.security.access.AccessDeniedException; import org.springframework.security.web.access.AccessDeniedHandler; @@ -9,6 +11,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.time.LocalDateTime; // 정상적인 JWT 가 왔지만 권한이 부족한 경우 예외 처리. SecurityConfig 에서 사용됨. @Component @@ -22,6 +25,20 @@ public void handle( HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException { - handlerExceptionResolver.resolveException(request, response, null, accessDeniedException); + setResponse(response); + } + + private void setResponse(HttpServletResponse response) throws IOException { + response.setContentType("application/json;charset=UTF-8"); + response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); + + JsonObject responseJson = new JsonObject(); + responseJson.addProperty("timestamp", String.valueOf(LocalDateTime.now())); + responseJson.addProperty("status", ErrorCode.ACCESS_DENIED.getStatus()); + responseJson.addProperty("code", ErrorCode.ACCESS_DENIED.getCode()); + responseJson.addProperty("error", ErrorCode.ACCESS_DENIED.name()); + responseJson.addProperty("message", ErrorCode.ACCESS_DENIED.getMessage()); + + response.getWriter().print(responseJson); } }