SpringInterceptor에서 로그인을 확인하고 로그인이 안되었을 경우 alert창을 사용하여 로그인을 안내하는 메세지를 보여주는 로직이 필요했습니다.
``` 중략 ```
response.setContentType("text/html; charset=UTF-8");
PrintWriter writer = response.getWriter();
writer.println("" +
"<script>" +
"alert('"+LOGIN_MESSAGE+"'); " +
"location.href='"+SecurityWebMvcConfig.LOGIN_PAGE+"';" +
"</script>"
);
writer.flush();
writer.close();
``` 중략 ```
그런데 alert가 나올때도 있고, 안나올때도 있었습니다.
검색을 해본결과 JSP의 우선순의 때문에 response.sendRedirect를 사용하면 HTML 태그의 코드들이 수행되기 전에
response.sendRedirect()가 먼저 실행되어 발생하는 경우가 있다고 했습니다.
하지만 저는 script 안에서 location.href를 사용했기에 저에게 해당되는 경우는 아니였습니다.
순간 Chrome에서 페이지를 캐싱하는 경우도 있을까? 라는 생각을 하였습니다.
페이지를 캐싱해도 alert는 정상작동 하는것이 맞지만, 가능성을 살펴보기로 했습니다.
Edge를 사용해 테스트를 해보니...
alert 창이 너무나도 잘 나왔습니다...🤦♂️
Chrome에서 다시 테스트 해보는데 URI를 전부 입력하기 전에
페이지가 load되고 있음을 확인하였습니다.
Chrome의 설정의 문제가 있다는 것을 확신하고 설정창을 보기 시작했습니다.
그리고 아래와 같은 설정을 확인하였습니다.
alert 창이 크롬 설정에 따라 미리 로드될 때 혼자 뜨고 사라지는것 같습니다.
해당 옵션을 끄니 alert 창이 정상작동 하였습니다.
'Spring' 카테고리의 다른 글
[Spring] Interceptor를 사용해 Security를 구현해보자 (Filter vs Interceptor) (0) | 2023.12.29 |
---|---|
[Jsp] <form:errors> 태그로 Validation 체크 (0) | 2023.12.29 |
[스프링의 삼각형] AOP - 횡단괌심 (0) | 2023.10.11 |
IoC 와 DI 그리고 Bean (1) | 2023.10.11 |
싱글톤 패턴 (0) | 2023.09.22 |