2012-05-23 4 views
0

서블릿 필터를 작성했으며 재귀 적으로 실행 중입니다.반복적으로 실행되는 필터

특정 속성이 설정되지 않은 세션에서 로그인 페이지를 제어하려고합니다.

실제로 로그인 페이지

<filter> 
     <filter-name>AppFilter</filter-name> 
     <filter-class>web.AppFilter</filter-class> 
    </filter> 

    <filter-mapping> 
     <filter-name>AppFilter</filter-name> 
     <url-pattern>/faces/*</url-pattern> 
    </filter-mapping> 
</filter> 

이 친절하게 나에게 doFilter가 반복적으로 실행하지 않아야하는 솔루션을 말해 다른 페이지와 동일한 URL 패턴을 가지고있다.

답변

0

리디렉션되지 않도록 요청 URI가 로그인 페이지 자체와 일치하면 필터를 체크인하십시오.

String loginURI = request.getContextPath() + "/faces/login.xhtml"; 

if (user != null || request.getRequestURI().equals(loginURI)) { 
    chain.doFilter(request, response); 
} 
else { 
    response.sendRedirect(loginURI); 
} 
관련 문제