Filter
을 사용하여 일부 페이지에 액세스하려는 사용자에게 강제로 로그인을 시도하고 있습니다.인덱스를 제외한 모든 페이지에서 서블릿 필터 사용
그래서 내 Filter
은 세션이없는 오류 페이지로 리디렉션해야합니다.
그러나 색인 페이지에 로그인 할 수 있기 때문에 방문하는 사용자가 index.html
에 방문하는 것을 원하지 않습니다.
그래서 /
및 index.xhtml
을 제외한 모든 페이지와 일치하는 URL 패턴이 필요합니다.
어떻게하면됩니까? 내 web.xml
에 정규식을 사용할 수 있습니까?
편집 : 내 doFilter()
방법
if (!req.getRequestURI().matches("((!?index)(.*)\\.xhtml)|((.*)\\.(png|gif|jpg|css|js(\\.xhtml)?))"))
,하지만 여전히 모든 것을 처리합니다
을 읽은 후 나는 같은 것을 할 수 있다고 생각.
정규식이 온라인으로 테스트되었고 필터링 할 필요가없는 파일과 일치하기 때문에 정규식이 작동하지만 제외 된 파일에 대해서도 if 내용이 실행됩니다.
수정 2 :
나는 새로운 방식을 시도하고 있습니다.
필터를 *.xhtml
에 내 web.xml
에 매핑 했으므로 위 정규식을 사용하여 CSS, 이미지 및 자바 스크립트를 제외 할 필요가 없습니다.
여기합니다 (doFilter()
에) 새로운 코드
if (req.getRequestURI().contains("index")) {
chain.doFilter(request, response);
} else {
if (!userManager.isLogged()) {
request.getRequestDispatcher("error.xhtml").forward(request, response);
} else {
chain.doFilter(request, response);
}
}
이다하지만이 모든 페이지에 (만약 외부에서)를 chain.doFilter()
를 호출하기 때문에 여전히하지 않습니다.
색인 페이지를 필터링하지 않도록 제외하려면 어떻게합니까?
내 색인 페이지는 환영 파일로 설정되어 있지만'request.getRequestURI()'는'/ contextpath/index.xhtml'을 출력하므로 이것이 이상하게 보입니다. 제 솔루션을 최대한 빨리 시도해 보겠습니다. – StepTNT