로그인 에러 처리 변경

This commit is contained in:
현성필
2023-10-17 14:06:41 +09:00
parent 5ab8969827
commit 9076d35cac
3 changed files with 12 additions and 7 deletions
@@ -33,4 +33,13 @@ public class CustomGlobalExceptionHandler extends ResponseEntityExceptionHandler
return new ResponseEntity<>(errors, HttpStatus.BAD_REQUEST); return new ResponseEntity<>(errors, HttpStatus.BAD_REQUEST);
} }
@ExceptionHandler(UserNotLoginException.class)
public ResponseEntity<CustomErrorResponse> customHandleUserNotLogin(Exception ex, WebRequest request) {
CustomErrorResponse errors = new CustomErrorResponse();
errors.setTimestamp(LocalDateTime.now());
errors.setError(ex.getMessage());
errors.setStatus(HttpStatus.UNAUTHORIZED.value());
return new ResponseEntity<>(errors, HttpStatus.UNAUTHORIZED);
}
} }
@@ -1,13 +1,12 @@
package com.eactive.httpmockserver.common.interceptor; package com.eactive.httpmockserver.common.interceptor;
import com.eactive.httpmockserver.common.exception.UserNotLoginException;
import com.eactive.httpmockserver.common.util.SecurityUtil; import com.eactive.httpmockserver.common.util.SecurityUtil;
import com.eactive.httpmockserver.user.entity.AnonymousUser; import com.eactive.httpmockserver.user.entity.AnonymousUser;
import com.eactive.httpmockserver.user.entity.User; import com.eactive.httpmockserver.user.entity.User;
import org.springframework.util.AntPathMatcher; import org.springframework.util.AntPathMatcher;
import org.springframework.web.servlet.AsyncHandlerInterceptor; import org.springframework.web.servlet.AsyncHandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.ModelAndViewDefiningException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@@ -48,8 +47,7 @@ public class AuthenticInterceptor implements AsyncHandlerInterceptor {
User currentUser = SecurityUtil.getCurrentUser(); User currentUser = SecurityUtil.getCurrentUser();
if (currentUser == null || currentUser instanceof AnonymousUser) { if (currentUser == null || currentUser instanceof AnonymousUser) {
ModelAndView redirectLoginView = new ModelAndView("redirect:/login"); throw new UserNotLoginException();
throw new ModelAndViewDefiningException(redirectLoginView);
} }
boolean found = findPattern(request.getRequestURI()); boolean found = findPattern(request.getRequestURI());
@@ -58,8 +56,7 @@ public class AuthenticInterceptor implements AsyncHandlerInterceptor {
if (currentUser.getUserSecurity() != null && "ROLE_ADMIN".equals(currentUser.getUserSecurity())) { if (currentUser.getUserSecurity() != null && "ROLE_ADMIN".equals(currentUser.getUserSecurity())) {
return true; return true;
} else { } else {
ModelAndView redirectLoginView = new ModelAndView("redirect:/"); throw new UserNotLoginException();
throw new ModelAndViewDefiningException(redirectLoginView);
} }
} }
return true; return true;
@@ -60,7 +60,6 @@ public class LoginController {
/** /**
* 세션타임아웃 시간을 연장한다. * 세션타임아웃 시간을 연장한다.
* Cookie에 egovLatestServerTime, egovExpireSessionTime 기록하도록 한다.
* *
* @return result - String * @return result - String
*/ */