문제
- successhandler 또는 failurehandler 또는 deniedhandler 에 걸쳐서 한글 데이터를 response 할 시 참고 하시기 바랍니다.
- 한글이 나와야 하는 부분에 ??? 로 처리가 되고 있다면 해당 글을 보고 처리 해보시길 바랍니다.
Form 형식 Post - redirect시 한글 깨짐 문제 해결방법
- AuthenticationFailureHandler에서 error에 대한 메세지를 경우에 따라 적용하였는데, 해당 값이 URL 파라미터 값으로 넘어 가면 한글이 ???? 처리가 되었음.
- 해당 부분을 처리 하기위해 URLEncoder클래스의 encode 메소드를 사용하여 처리를 하였음.
@Component
public class CustomAuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler {
@Override
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException {
String errorMassage = "";
if(exception instanceof BadCredentialsException) {
errorMassage = "아이디와비밀번호가틀립니다.";
} else if (exception instanceof InsufficientAuthenticationException) {
errorMassage = "인증되지 않은 경로로 접근하였습니다.";
}
//URL엔코더를 하여 스트링 문자열이 ??? 롤 나오는 문제 해결함.
String encode = URLEncoder.encode(errorMassage, "UTF-8");
setDefaultFailureUrl("/login?error=true&exception=" + encode);
super.onAuthenticationFailure(request, response, exception);
}
}
JWT 형식 POST - Response 시 한글 깨짐 문제
- URL로 API를 요청시 값들에 있는 한글들이 ??? 로 표시되는 문제가 생김.
- 특히나 Security내에서 생긴 문제로 어떻게 해결해 나가야 하는지 고민 하다가 Response에 Header를 추가하는 메소드를 발견하여 아래와 같이 입력하니 문제가 해결됨.
public class AjaxAuthenticationSuccessHandler implements AuthenticationSuccessHandler {
private ObjectMapper ObjectMapper = new ObjectMapper();
@Override
public void onAuthenticationSuccess(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Authentication authentication) throws IOException, ServletException {
User user = (User) authentication.getPrincipal();
httpServletResponse.setStatus(HttpStatus.OK.value());
httpServletResponse.setContentType(MediaType.APPLICATION_JSON_VALUE);
// 헤더에 charset 타입 추가로 인해 인코딩 문제를 해결함
httpServletResponse.addHeader("Content-Type", "application/json; charset=UTF-8");
ObjectMapper.writeValue(httpServletResponse.getWriter(), user);
}
}
'IntelliJ 관련 > 문제 해결방법 모음' 카테고리의 다른 글
Spring Boot mustache 한글깨짐 (? 나오는 현상) (0) | 2022.12.05 |
---|---|
SLF4J 문제(Gradle) (0) | 2022.11.30 |