https://github.com/beginner0107/bank/commit/aaa63af514db6dff6955ebdfc31ad296f8ea9be3?diff=split
SecurityConfig 설정 파일 수정
// Exception 가로채기
http.exceptionHandling().authenticationEntryPoint((request, response, authException) -> {
CustomResponseUtil.unAuthentication(response, "로그인을 진행해 주세요.");
});
- authentication -> 인증관련 에러가 발생하면
- CustomResponseUtil이라는 클래스에서 Json 형태로 Body에 Error Message를 보여주게 된다.
CustomResponseUtil.class
public class CustomResponseUtil {
private static final Logger log = LoggerFactory.getLogger(CustomResponseUtil.class);
public static void unAuthentication(HttpServletResponse response, String msg) {
try {
ObjectMapper om = new ObjectMapper();
ResponseDto<?> responseDto = new ResponseDto<>(-1, msg, null);
String responseBody = om.writeValueAsString(responseDto);
response.setContentType("application/json; charset=utf-8");
response.setStatus(401);
response.getWriter().println(responseBody);
} catch (Exception e) {
log.error("서버 파싱 에러");
}
}
}
- ObjectMapper를 이용하여 ResponseDto를 Json형태의 문자열로 파싱할 수 있다.
- response.setStatus(401)을 하는 이유?
- https://mangkyu.tistory.com/146
- 401은 인증관련 403은 인가관련 상태 코드이다.
- 여기서 setStatus를 설정해주지 않으면 (PostMan으로 확인) 401 상태코드가 나오는 것을 확인할 수 있다.
ResponseDto.class
@RequiredArgsConstructor
@Getter
public class ResponseDto <T>{
private final Integer code; // 1. 성공, -1 실패
private final String msg;
private final T data;
}
'CS지식들 > 공부공부' 카테고리의 다른 글
도커로 개발환경 세팅하기 (0) | 2023.04.07 |
---|---|
회원 가입 로직 구현 (1) | 2023.03.09 |
Spring Security filterChain (0) | 2023.03.06 |
동시성 문제 (3) (0) | 2022.12.19 |
동시성 문제 (2) (0) | 2022.12.19 |