Spring Security를 이용해 로그인 페이지를 구현하다가 /favicon.ico 페이지로 리다이렉트 되는 현상을 경험했다. 이 문제의 원인은 Spring Security의 문서에서 찾을 수 있었다.
Spring Security의 ExceptionTranslationFilter의 역할 중 하나는 인증 단계 진입 전에 최초 사용자의 요청을 캐싱 하고 있다가 사용자 인증 절차가 필요하여 인증 페이지로 이동 후 인증에 성공할 경우 캐싱된 페이지로 리다이렉트 시켜 준다.
-- from http://docs.spring.io/spring-security/site/docs/3.2.5.RELEASE/reference/htmlsingle/#request-caching
원래대로라면 사용자가 최초 요청한 url에서 인증 페이지로 리다이렉트 되며 사용자가 요청한 url이 캐싱되어야 하지만 많은 브라우저가 사용자 요청과 동시에 /favicon.ico 을 찾으려고 한번 더 리퀘스트를 하게 되고, 이 때 /favicon.ico에 대한 권한이 없다면 최초 요청한 url에서의 리다이렉트가 아닌 /favicon.ico에 대한 리다이렉트 페이지로 접근하게 되는 현상이었다.
이 문제는 간단하게 아래 처럼 /favicon.ico 리소스에 대해 접근 제한을 해제하면 해결할 수 있었다.
<intercept-url pattern="/favicon.ico" access="ROLE_ANONYMOUS" />
'Spring Framework' 카테고리의 다른 글
Spring Application Configuration - 설정방법에 따른 장단점 (0) | 2014.08.19 |
---|