From f1ac5fc654ab0cf3e36e54b1aa7791f6e4064c8e Mon Sep 17 00:00:00 2001 From: hoon7566 Date: Wed, 2 Mar 2022 16:26:00 +0900 Subject: [PATCH] =?UTF-8?q?fix(owner-gateway-service):=20access=20token=20?= =?UTF-8?q?=EC=97=86=EC=96=B4=EB=8F=84=20200=20ok=20=EB=A6=AC=ED=84=B4?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit global exception handler에 ExpiredJwtException을 제외한 exception 처리하는 로직 추가. --- .../handler/GlobalExceptionHandler.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/owner-apigateway-service/src/main/java/com/justpickup/ownerapigatewayservice/handler/GlobalExceptionHandler.java b/owner-apigateway-service/src/main/java/com/justpickup/ownerapigatewayservice/handler/GlobalExceptionHandler.java index 8c309cd..36d9de4 100644 --- a/owner-apigateway-service/src/main/java/com/justpickup/ownerapigatewayservice/handler/GlobalExceptionHandler.java +++ b/owner-apigateway-service/src/main/java/com/justpickup/ownerapigatewayservice/handler/GlobalExceptionHandler.java @@ -3,6 +3,9 @@ package com.justpickup.ownerapigatewayservice.handler; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import io.jsonwebtoken.ExpiredJwtException; +import io.jsonwebtoken.MalformedJwtException; +import io.jsonwebtoken.SignatureException; +import io.jsonwebtoken.UnsupportedJwtException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.web.reactive.error.ErrorWebExceptionHandler; import org.springframework.core.io.buffer.DataBuffer; @@ -13,6 +16,7 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import java.util.HashMap; +import java.util.List; import java.util.Map; public class GlobalExceptionHandler implements ErrorWebExceptionHandler { @@ -22,7 +26,11 @@ public class GlobalExceptionHandler implements ErrorWebExceptionHandler { @Override public Mono handle(ServerWebExchange exchange, Throwable ex) { - + List> jwtExceptions = + List.of(SignatureException.class, + MalformedJwtException.class, + UnsupportedJwtException.class, + IllegalArgumentException.class); Class exceptionClass = ex.getClass(); Map responseBody = new HashMap<>(); @@ -31,6 +39,15 @@ public class GlobalExceptionHandler implements ErrorWebExceptionHandler { exchange.getResponse().getHeaders().setContentType(MediaType.APPLICATION_JSON); responseBody.put("code", "EXPIRED"); responseBody.put("message", "Access Token is Expired!"); + } else if (jwtExceptions.contains(exceptionClass)){ + exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED); + exchange.getResponse().getHeaders().setContentType(MediaType.APPLICATION_JSON); + responseBody.put("code", "INVALID"); + responseBody.put("message", "Invalid Access Token"); + }else{ + exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED); + exchange.getResponse().getHeaders().setContentType(MediaType.APPLICATION_JSON); + responseBody.put("code", "INVALID"); } DataBuffer wrap = null; @@ -43,4 +60,5 @@ public class GlobalExceptionHandler implements ErrorWebExceptionHandler { return exchange.getResponse().writeWith(Flux.just(wrap)); } + }