Tomcat 8의 루트 컨텍스트 (/
)에 배포 된 WAR 파일이 있는데이 파일에는 서블릿 필터가 연결되어 있습니다. 필터는 사용자가 로그인했는지 여부를 확인하고 로그인 페이지로 리디렉션하지 않는지 확인합니다. 같은 문맥에 배치 된 다른 문맥도 /app1
과 /app2
입니다. 루트 컨텍스트의 필터를 다른 컨텍스트에도 적용하여 3 개의 거의 동일한 필터 (각 컨텍스트에 하나씩)를 유지할 필요가 없습니다.루트 컨텍스트에서 서블릿 필터가 다른 컨텍스트에서 작동하도록 허용하려면 어떻게합니까?
다른 컨텍스트에 속하는 URL이 루트 컨텍스트의 필터에서 처리되지 않는 것이 문제입니다. 예를 들어 URI /foo/bar
은 필터에 의해 포착되지만 (다른 컨텍스트 중 하나에 해당하지 않으므로) /app1/foo/bar
은 포착되지 않습니다.
내가 web.xml 파일에서 필터 매핑 수정하여 모든 것을 잡으려고 필터를 구성 시도했다 :
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
을 내가 명시 적으로 각 상황에 맞는 추가 시도했다 :
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/*</url-pattern>
<url-pattern>/app1/*</url-pattern>
<url-pattern>/app2/*</url-pattern>
</filter-mapping>
을
하지만 두 방법 모두 효과가 없습니다. 보안 문제라고 가정합니다. 다른 문맥에서는 명시 적으로 루트 필터를 허용해야합니다. 어떻게 작동 시키나요?
[Apache Tomcat 8 Configuration Reference] (https://tomcat.apache.org/tomcat-8.0-doc/config/context.html)에서 설명한대로 교차 컨텍스트 호출을 활성화 한 다음 [ javax.servlet.ServletContext.getRequestDisptacher (...)] (http://docs.oracle.com/javaee/7/api/javax/servlet/ServletContext.html#getRequestDispatcher-java.lang.String-) app1' 또는'app2'. 그것은 지저분 할 수 있지만 루트 응용 프로그램과 다른 응용 프로그램 간의 직접 연결을 만듭니다. –